谷歌Chrome扩展程序不起作用

时间:2011-09-05 13:04:37

标签: google-chrome-extension xmlhttprequest

这是一个简单的扩展,它调用Xmlhttprequest将POST数据发送到表单。我还在js代码的开头/结尾添加了简单的消息框...从后台页面调用代码,并在manifest.json中授予了正确的权限。 但是,当我点击此扩展程序的按钮时,没有任何事情发生。

下面给出了扩展名的js代码 -

alert("Beginning of code block");
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("POST","http://taurusarticlesubmitter.appspot.com/sampleform",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("name=Arvind&description=Test description&email=arvind@taurusseo.com");
alert("End of code block");

另外,我将以下代码添加到background.html -

<script>
  // Called when the user clicks on the browser action.
  chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.tabs.executeScript(
        null, {file: "cdr.js"});
  });

  chrome.browserAction.setBadgeBackgroundColor({color:[0, 200, 0, 100]});


 </script>

最后,下面给出的是我的manifest.json -

{
  "name": "My Second Extension",
  "version": "1.0",
  "background_page": "background.html",
  "description": "The second extension that I made.",
   "browser_action": {
        "name": "Data in iframe",
       "default_icon": "icon.png"
},  
"permissions": [ "tabs",
       "bookmarks",
           "http://*/*",
           "https://*/*",
            "unlimitedStorage"
     ]
 }

1 个答案:

答案 0 :(得分:1)

我假设你的第一个代码块是cdr.js?然后你从后台页面运行它。相反,您的后台页面会加载尝试发送请求的内容脚本。内容脚本使用已注入的页面的权限运行。因此,如果该页面没有权限向taurusarticlesubmitter.appspot.com发送请求,那么内容脚本也将没有必要的权限。

如果您的内容脚本需要执行特权操作(例如向第三方页面发送请求),则应该send a message to the background page并且后台页面必须执行此操作。