将活动选项卡的URL传递给我的站点处理程序

时间:2012-08-27 03:19:25

标签: google-chrome-extension

我怀疑这是一个全新的问题,但我似乎错过了这里的基础知识。我并不擅长编码,并且拥有使用各种语言的一生经验(27年),但插件流程让我望而却步。

我在php&amp ;;中开发了自定义书签系统。 js,它的效果非常好,而且在开发它的过程中我已经使用了几个月。

我只想在活动选项卡中获取页面的url并将其传递给我的php处理程序。我希望我的网站脚本将html表单返回到弹出窗口。我可以想到“应该”工作的千种方式。

我发现的所有代码示例似乎都过分复杂应该是一个简单的任务。

简而言之,我只想要:

<script type="text/javascript">
<!--
var loadurl = "http://my.site.com?theUrl=" + window.location;
location.href = loadurl;
//-->
</script>

将该页面显示在弹出窗口中。到目前为止,我很茫然。甚至尝试了ajax调用等。 有人能告诉我如何实现这个简单的任务吗?也许我可以开始用信息编写扩展名。

对于记录,我发现的大部分示例都在manifest 2.0

下弃用

1 个答案:

答案 0 :(得分:0)

Manifest 2.0引入了一项新功能contentSecurityPolicy。默认情况下会阻止所有外部资源。对于最佳实践,您应该在扩展中包含所有需要的资产文件。扩展和服务(php端)之间的通信只是使用XHR2的数据。

所以,为了使书签扩展工作,我猜你需要这样的东西:

  1. 将您的服务的域添加到权限数组

    {
        ...
        permissions: ['*://my.site.com/*', 'tabs']
    }
    
  2. 将所有javascript从popup.html移至popup.js。在popup.js中,您为书签服务创建了一个ajax请求。 More document here

    function addBookmark(url) {
        var xhr = new XMLHttpRequest();
        xhr.open("GET", "http://my.site.com/new_bookmark.php?url=" + encodeURIComponent(url), true);
    
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4) {
                var resp = xhr.responseText;
                // handle service result here
            }
        }
        xhr.send();
    }
    
    chrome.tabs.getSelected(null,function(tab) {
        addBookmark(tab.url);
    });