【发布时间】:2011-10-23 23:34:18
【问题描述】:
我正在开发一个 chrome 扩展,遇到了一个我无法解决的问题;/
我编写了清单文件和一些 java 脚本代码。除了按钮,一切都很好。当我单击它们时,它们应该使用参数触发 echo 函数并将其进一步发送到在 firebreath 中开发的插件。当我在 html 文件中手动注入代码时,一切正常,但是当通过 javascript chrome 控制台注入代码时,会提示我未定义回显函数。我尝试了几种注入代码的方法,但都没有奏效。
所以我向其他程序员寻求帮助或一些好的建议。 (第一次发帖害羞)
主 javascript 文件 chrome_script.js
var Reg = /(\+48\s?[0-9]{3}[\-\ ]?[0-9]{3}[\-\ ]?[0-9]{3})|(\+48\s?[\(\ ]?[0-9]{2}[\)\ ]?[0-9]{2,3}[\-\ ]?[0-9]{2}[\-\ ]?[0-9]{2})/g
var content = document.body.innerHTML;
var phoneNumbers = content.match(Reg);
document.getElementsByTagName('head')[0].innerHTML +='<script src="'+chrome.extension.getURL("plug_fun.js")+'" type="text/javascript"></script>';
content = "<object id=\"plugin0\" type=\"application/x-testplugin\" width=\"100%\" height=\"300\"></object>" + content;
for (var i = 0; i < phoneNumbers.length; i++) {
content = content.replace(phoneNumbers[i], "<button id=\"" + i + "\" type=\"button\" onclick=\"javascript:echo(" + phoneNumbers[i].replace(new RegExp("[\+\ ]", "g"),"") + ")\">" + phoneNumbers[i] + "</button>");
}
document.body.innerHTML = content;
javascript 文件 plug_fun.js,用于插件和按钮
function plugin0(){
return document.getElementById('plugin0');
}
plugin = plugin0;
function echo(a){
var num = String(a);
plugin().echo(num);
}
清单文件 manifest.json
{
"name": "Phone Injection",
"version": "0.2",
"browser_action": {
"default_icon": "Phone.ico"
},
"permissions": [
"tabs", "http://*/*", "https://*/*", "file://*"
],
"plugins": [
{ "path": "npTestPlugin.dll", "public": true }
],
"content_scripts": [ {
"matches": ["http://*/*", "https://*/*", "file://*"],
"js": ["chrome_script.js", "plug_fun.js"]
}]
}
点击按钮时发现错误
Uncaught ReferenceError: echo is not defined
【问题讨论】:
标签: javascript google-chrome-extension npapi