如何通过chrome扩展程序检测按钮事件

App*_*ang 2 javascript jquery google-chrome-extension

我想检测页面中的按钮事件,我从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>
Run Code Online (Sandbox Code Playgroud)

的script.js

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

Juz*_*Ali 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>
Run Code Online (Sandbox Code Playgroud)

至于你关于听按钮点击的另一个问题,从你的问题中你不清楚你在说哪个按钮.是浏览器操作按钮吗?如果是这种情况,您的代码将正常工作.如果它是用户DOM上的按钮,则必须按照上述描述添加脚本来监听click事件并通知您的扩展名(background.html),您的background页面将依次加载脚本.