Contents.js 阻止页面加载 chrome 扩展程序
Contents.js blocking page load chrome extension
嘿伙计们,我正在构建一个扩展,但我有一个功能在 运行ning 时很重,它阻止了页面的加载,我想知道是否可以只 [=23] =] 在页面完全加载并在脚本或 manifest.json
?
中进行交互之后
我目前将它放在 window.onload
中,但仍然阻止了页面的交互性。
脚本:
async function getEAN() {
var EANIndex;
var body = document.body.innerText;
if ((EANIndex = body.indexOf('EAN')) !== -1) {
body = body.slice(EANIndex, EANIndex + 100);
const regexExpression = RegExp(/([^EAN]*$)*\d{3}\d{4,6}\d{3,5}\d/gm);
return body.match(regexExpression)[0]
}
return false
}
window.onload = function() {
if (window.location.pathname &&
location.hostname.indexOf(".google.com") !== -1) {
console.log(getEAN());
}
}
这是否可能,如果可以,我该如何实现?
由于内容脚本本身微不足道,问题是由正则表达式内部的灾难性回溯引起的,特别是([^EAN]*$)*
可以在任何地方匹配0个字符。
解决方案是使用后视条件:
/(?<=EAN\s*)\d{11,15}/gm
嘿伙计们,我正在构建一个扩展,但我有一个功能在 运行ning 时很重,它阻止了页面的加载,我想知道是否可以只 [=23] =] 在页面完全加载并在脚本或 manifest.json
?
我目前将它放在 window.onload
中,但仍然阻止了页面的交互性。
脚本:
async function getEAN() {
var EANIndex;
var body = document.body.innerText;
if ((EANIndex = body.indexOf('EAN')) !== -1) {
body = body.slice(EANIndex, EANIndex + 100);
const regexExpression = RegExp(/([^EAN]*$)*\d{3}\d{4,6}\d{3,5}\d/gm);
return body.match(regexExpression)[0]
}
return false
}
window.onload = function() {
if (window.location.pathname &&
location.hostname.indexOf(".google.com") !== -1) {
console.log(getEAN());
}
}
这是否可能,如果可以,我该如何实现?
由于内容脚本本身微不足道,问题是由正则表达式内部的灾难性回溯引起的,特别是([^EAN]*$)*
可以在任何地方匹配0个字符。
解决方案是使用后视条件:
/(?<=EAN\s*)\d{11,15}/gm