我正在编写一个修改网站的 javascript 扩展。扩展为网站添加了一个按钮,点击它会修改页面内容。我的脚本必须将跨域 xmlhttprequests 发送到 websiteB,并在安装时获得这样做的权限。
我的问题是在我正在修改的网站的内容范围内运行的代码无权进行跨域请求,因为它在网页的内容范围内。我也不能轻松地在我的主要扩展代码和在页面上单击按钮时运行的代码之间传递变量。
这些是我的代码的相关部分:
// ==UserScript==
// @include http://www.WebsiteB.com/*
// @match http://www.WebsiteB.com/*
// ==/UserScript==
var a = 1;
button.innerHTML = '<a href="javascript:void(0)" onclick="myFunc();">clickMe</a>';
menu.appendChild(button);
contentEval(function() {
myFunc = function() {
//a is undefined
//this part does not have cross domain request permission
};
}
我使用从http://wiki.greasespot.net/Content_Script_Injection获取的 contentEval 来获取相关代码,以便能够与运行我的脚本的页面进行交互。没有它,我将无法从网站上的按钮调用 myFunc。也不能通过直接使用 myFunc(a) 将变量从主代码区域传输到 myFunc()。myFunc(1) 有效,但不适合我的需要。
我可能会以错误的方式处理事情。如果有,请赐教。
有没有办法从与网页交互的代码中获得跨域权限?如果没有,我应该使用什么来将消息从主代码区域传递到页面的内容脚本?