我如何在没有iframe和使用ajax的弹出式chrome扩展中加载网页

时间:2012-03-06 14:02:26

标签: google-chrome google-chrome-extension

Manifiest.json

{
    "name":"MyExtension",
    "version":"1.0",
    "description":"MyExtension Description.",
    "icons":{"128":"browseraction.png"},
    "browser_action":
                    {
                        "default_icon":"icon.png",
                        "default":"Mi default title",
                        "popup":"popup.html"
                    },
    "permissions":[
    "http://*/*",
    "tabs"
    ]
}

这是我的 popup.html

<html>
<head>
    <script type="text/javascript">     
        var address = "http://www.google.com";
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = handleStateChange; 
    xhr.open("GET", chrome.extension.getURL(address), true);//This dont work
    //xhr.open("GET", chrome.extension.getURL('/popup1.html'), true);//thisWork
    xhr.send();
    function handleStateChange()
    {
        if (xhr.readyState == 4) 
        {

            alert(xhr.responseText);
        }
        else
        {
            alert('Not Yet');
        }
    }
</script>
</head>
<body>

</body>
</html>

我只想显示带有警报的html代码 我看过,http://code.google.com/chrome/extensions/xhr.html和其他资源,但只是不工作 提前谢谢

1 个答案:

答案 0 :(得分:4)

您的代码不起作用,因为chrome.extension.getURL 按预期工作。对于给定字符串,它会尝试将网址解析为Chrome扩展程序中的本地文件。

http://www.google.com/作为输入时,返回www.google.com。 XHR请求未完成,因为URI无效(缺少协议[和路径])。此外,(浏览器操作)弹出窗口和内容脚本都是受跨域策略限制

要创建跨域XHR请求,您必须在Background page文件中添加manifest.json, at permissions 添加URI。

这个答案提供了完整的演示: