2012-11-02 55 views
0

我想要的很简单。用户点击扩展的图标,并执行一个JS代码,显示一个提示框询问两个值。但我无法弄清楚如何正确链接JS与popup.html。到目前为止,只需点击图标,弹出窗口就会打开,而不需要运行JS代码。运行javascript并点击Chrome扩展中的popup.html图标

popup.html

<!DOCTYPE html> 
<html> 
    <head> 
     <script type="text/javascript" src="prompt.js"></script> 
    </head> 
    <body onload="promptBox()"> 
    </body> 
</html> 

prompt.js

function promptBox() { 
    prompt('Choose File 1',A14nH); 
    R1Gh7=prompt('Choose File 2',L3f7); 
    if(L3f7&&R1Gh7) { 
     Fr4Q='<frameset cols=\'*,*\'>\n<frame src=\''+L3f7+'\'/>'; 
     Fr4Q+='<frame src=\''+R1Gh7+'\'/>\n'; 
     Fr4Q+='</frameset>'; 
     with(document) { 
      write(Fr4Q); 
      void(close()) 
     } 
    } 
    else{ 
     void(null) 
    }; 
} 

回答

6

不能Chrome扩展程序中运行内嵌处理器。
右键点击你的扩展图标并点击“检查弹出窗口”。您将看到以下内容:

拒绝执行内联事件处理程序,因为它违反了以下内容安全策略指令:“script-src”self'chrome-extension-resource:“。

你需要从你的身体中删除onload="promptBox()"并添加监听到你的prompt.js代替:

function promptBox() { 
    // ... 
} 

document.addEventListener('DOMContentLoaded', function() { 
    promptBox(); 
}); 
+0

这将是很好的提jQuery不会弹出内部的工作都顺利.html,例如:jQuery eventhandler中的'this'是'window'。因此,调用'$(this).remove()'将不起作用,但普通JS工作于'document.getElementById(“btnX”)。remove();' – Legends

3
chrome.browserAction.onClicked.addListener(promptBox); 
1

对于我想做的事(通过插入帧操纵当前页)事实证明,内容脚本是关键字。

后台脚本侦听扩展图标上的onclick操作并触发调用promptBox函数的内容脚本。

的manifest.json

{ 
    "manifest_version": 2, 
    "background": { 
     "scripts": ["background.js"], 
     "persistent": false 
    }, 
    "permissions": [ 
     "tabs", 
     "http://*/*", 
     "https://*/*" 
    ], 
    "browser_action": { 
     "default_title": "Dual View Split Screen", 
     "default_icon": "icon48x48.png" 
    } 
} 

background.js

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.tabs.executeScript(null, {file: "prompt.js"}); 
}); 

prompt.js

function promptBox() { 
    windowLeft = prompt('Please choose your left window:', document.URL); 
    windowRight = prompt('Please choose your right window:', document.URL); 
    if(windowLeft && windowRight) { 
     result='<frameset cols=\'*,*\'>\n<frame src=\''+windowLeft+'\'/>'; 
     result+='<frame src=\''+windowRight+'\'/>\n'; 
     result+='</frameset>'; 
     with(document) { 
      write(result); 
      void(close()) 
     } 
    } 
    else{ 
     void(null) 
    }; 
}; 

chrome.extension.onClicked.addListener(promptBox()); 
相关问题