我正在编写一个修改网站的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)有效,但不符合我的需要。
我可能会以错误的方式处理事情。如果是的话,请赐教。
有没有办法从与网页交互的代码中获得跨域权限? 如果没有,我应该用什么来做消息从主代码区传递到页面的内容脚本?