2

我想检测页面中的按钮事件,我从background.html注入我的script.js强文本文件,当单击按钮时,我想提醒一些消息而不是让按钮完成他的工作。所以我有两个问题,

1.我尝试在我的srcript.js中使用jquery ,但它似乎不起作用,我在 background.html中包含 jquery 文件,我如何在 .js 文件中使用 jquery?

2.点击时如何检测按钮事件?

下面是我的代码:

背景.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>

脚本.js

if( self.frameElement && self.frameElement.tagName == "IFRAME" ){
  $(":button").bind("click",function(){
    alert("iframe button");
  });
}
else{
  $(":button").bind("click",function(){
    alert("parent button");
  });
}
4

1 回答 1

7

至于为什么你的脚本中的 jQuery 不起作用,那是因为你已经在你的 jQuery 中包含了 jQuery background page,你需要将它加载到用户页面的扩展世界中。说清楚。您script.js应该加载到用户页面中。Chrome 将加载到页面中,但在该页面上isolated world是您的扩展程序的世界。您必须在该页面上加载 jQuery,就像您的script.js. 如下:

<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页面将加载该脚本。

于 2012-05-08T07:43:54.530 回答