我想检测页面中的按钮事件,我从 background.html 中注入 script.js 强文本文件,当按钮单击时,我想要提醒一些消息,而不是让按钮完成他的工作。 所以我有两个问题,
1.我尝试在 srcript.js 中使用 jquery ,但它似乎不起作用,我在 background.html中包含了jquery文件,我如何在.js文件中使用jquery?
2.如何在点击时检测按钮事件?
下面是我的代码:
background.html
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script>
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null,{file:'script.js',allFrames:true});
});
</script>
的script.js
if( self.frameElement && self.frameElement.tagName == "IFRAME" ){
$(":button").bind("click",function(){
alert("iframe button");
});
}
else{
$(":button").bind("click",function(){
alert("parent button");
});
}
答案 0 :(得分:7)
至于为什么你的脚本中的jQuery不起作用,那是因为你在background page
中包含了jQuery,你需要将它加载到用户页面扩展的世界中。说清楚。您的script.js
应该在用户页面中加载。 Chrome会加载到页面中,但会加载到isolated world
,这是您网页上的扩展程序世界。您必须像script.js
一样在该页面上加载jQuery。如下:
<script>
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null,{file:'jQuery.js',allFrames:true});
chrome.tabs.executeScript(null,{file:'script.js',allFrames:true});
});
</script>
至于你关于听按钮点击的另一个问题,从你的问题中不清楚你在说哪个按钮。是浏览器操作按钮吗?如果是这种情况,您的代码将正常工作。如果它是用户DOM上的按钮,则必须按照上述说明添加脚本来监听点击事件并通知您的扩展程序(background.html
),您的background
页面将依次加载脚本。