Safari 5扩展无需打开窗口即可加载URL

时间:2010-09-11 04:29:31

标签: javascript safari background load safari-extension

我在javascript上相当糟糕,但这就是我想要的。我的服务器上有一个PHP脚本,当用户按下我的Safari扩展按钮时,我想要一个请求(url)发送到我的服务器(www.myurl.com/directory/script.php?etc),但我不知道我真的想要一个新的窗口/标签打开来加载它。有没有办法将它加载到一个隐藏的窗口中并在完成时关闭它或类似的东西,使用Safari API或直接的javascript?

谢谢你们!

1 个答案:

答案 0 :(得分:5)

直接Javascript有XMLHttpRequest,它执行后台,默认情况下是异步HTTP请求。

文档链接指向Mozilla,虽然它与Safari一样。

var request = new XMLHttpRequest();
request.open("GET", "http://www.example.com/mypage");
request.onreadystatechange = function()
{
    // "4" means "completed"
    if (request.readyState != 4) return;

    // do something with the response from the server
    alert(request.responseText);
}
request.send();

Safari扩展程序无法从注入的脚本执行跨域请求。例如,如果您的用户访问google.com,则无法从注入的脚本向example.com发送请求,因为域名不匹配。 (实际上,协议和端口也必须匹配。)

这意味着您将需要您的全局页面来执行请求,并且您注入的脚本将不得不传递消息。 Safari开发人员中心提供了大量关于此的文档。