我有一个chrome扩展程序,单击该按钮后便会触发,即使页面已明确加载,该扩展程序仍无法访问DOM元素。
我看到其他帖子说这是因为元素是动态创建的,但不是我的情况。
唯一有效的方法是将我的debugTools.js包装为一个超时,并在800毫秒左右后将其触发。
debugTools.js中的代码不起作用。我不明白为什么即使在单击执行代码的按钮之前等待了10分钟,仍然说“ theWrapper”未定义。
在单击我的按钮之前,wrapper确实存在于我导航到的页面上。它在常规HMTL代码中。不是动态生成的。我觉得发布此页面代码只会使这个问题感到困惑。
// manifest.json
{
"name": "Jams Dev Tools",
"version": "1.0",
"description": "Provides dev tools",
"background": {
"scripts": ["background.js"],
"persistent": true
},
... // icons are included here
"manifest_version": 2,
"web_accessible_resources": [
"debugTools.css",
"debugTools.js"
],
"permissions": [
"https://*/*",
"http://*/*",
"tabs",
"activeTab"
]
}
// debugTools.js
var theWrapper = document.getElementById("wrapper");
console.log(theWrapper.style.width);
// injectFiles.js
if(document.getElementById("debugJs") == undefined) {
// Inject Css
var debugJs = document.createElement('script');
var theSource = chrome.extension.getURL("debugTools.js");
debugJs.setAttribute( 'src', theSource );
debugJs.id = "debugJs";
document.body.appendChild(debugJs);
}
// background.js
chrome.browserAction.onClicked.addListener(function (tab) {
// for the current tab, inject the "inject.js" file & execute it
chrome.tabs.executeScript(tab.id, {
file: 'injectFiles.js'
});
});
答案 0 :(得分:0)
好,所以这是您看不见树木的那一次。谢谢大家的帮助。原来我是个白痴。可以用下面的代码片段总结问题。
<Feb 13, 2019 2:27:56 PM EST> <Error> <HTTP> <BEA-101165> <Could not load user defined filter in web.xml: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter.
java.lang.NoSuchMethodError: ognl.SimpleNode.isSequence(Lognl/OgnlContext;)Z
at com.opensymphony.xwork2.ognl.OgnlUtil.isEvalExpression(OgnlUtil.java:356)
at com.opensymphony.xwork2.ognl.OgnlUtil.checkEnableEvalExpression(OgnlUtil.java:467)
at com.opensymphony.xwork2.ognl.OgnlUtil.compileAndExecute(OgnlUtil.java:422)
at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:334)
at com.opensymphony.xwork2.ognl.OgnlUtil.internalSetProperty(OgnlUtil.java:663)
Truncated. see log file for complete stacktrace