2

我怀疑这完全是新手问题,但我似乎在这里缺少基础知识。我对编码并不陌生,并且拥有各种语言的终生经验(27 年),但插件过程却让我望而却步。

我在 php 和 js 中开发了自定义书签系统,它工作得很好,我在开发它的过程中已经使用了几个月。

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

我发现的所有代码示例似乎都使本应简单的任务过于复杂。

简而言之,我只想:

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

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

作为记录,我发现的大多数示例在清单 2.0 下已弃用

4

1 回答 1

0

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

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

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

    {
        ...
        permissions: ['*://my.site.com/*', 'tabs']
    }
    
  2. 将所有 javascript 从 移动popup.htmlpopup.js. 在popup.js中,您向书签服务创建了一个 ajax 请求。更多文档在这里

    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);
    });
    
于 2012-08-27T09:45:24.227 回答