条件禁用脚本异常:Page Two出版商提取脚本失效求助
静态页面脚本执行逻辑问题
需求说明
- 在Page Two页面运行指定脚本,从文献条目中提取出版商信息填入“Nome”字段(示例值:Feltrinelli)
- 当Page One页面的
fieldset.legami_tito区域下,“Persone, enti e famiglie”标题对应的内容为“Editore moderno”时,Page Two的脚本不执行
已尝试方案
1. Page One 侧标记逻辑
在Page One中编写代码,通过localStorage设置状态标记:
var elencoLabel = document.querySelectorAll("span.grid-6"); if (elencoLabel.length > 8) { localStorage.removeItem("voce"); if (elencoLabel[8].innerText == "Editore moderno") { localStorage.setItem("voce","Editore moderno"); } }
逻辑:检测到目标内容为“Editore moderno”时,在本地存储中写入标记变量voce。
2. Page Two 侧脚本修改
替换原脚本最后一行,新增信息提取与填充逻辑:
function getNome(tmp) { var idx = tmp.indexOf('. (('); if(idx > -1){ tmp = tmp.substr(0, idx); } tmp = tmp.split('. - '); switch(tmp.length){ case 3: tmp = tmp[1]; break; case 4: tmp = tmp[2]; break; default: tmp = ""; break; } if(tmp !== ''){ tmp = tmp.substr(tmp.indexOf(' : ') + 2); console.log(tmp); if(tmp.indexOf('.') != -1 && tmp.split('.').length == 2){ tmp = tmp.substr(tmp.indexOf('. ') + 1, tmp.indexOf(', ') -3); tmp = tmp.trim(); } else { tmp = tmp.split(",")[0]; tmp = tmp.trim(); } } return tmp; } function impostaNome(tmp) { Array.from(document.querySelectorAll('article section.grid_container form div.grid-row label span')).filter( e => e.innerText.trim() === 'Nome')[0].parentNode.querySelector('input').value = tmp; } var elencoLabel = document.querySelectorAll("span.grid-6"); if (elencoLabel.length < 8 ) { var miaVoce = localStorage.getItem("voce"); if (miaVoce == "Editore moderno") { impostaNome(getNome(document.querySelector('div.meta.tito div.evidence.isbd').innerText)); } }
当前问题
修改后,Page Two的脚本完全无法提取并填充出版商信息,请求排查解决。
内容的提问来源于stack exchange,提问作者AnnuitCoeptis
相关产品推荐
相关产品推荐

