【问题标题】:XMLHttpRequest not working in Google Chrome Packaged Web AppXMLHttpRequest 在 Google Chrome 打包的 Web 应用程序中不起作用
【发布时间】:2012-07-07 17:03:46
【问题描述】:

我正在编写一个打包的 Chrome Web App 并尝试解析外部 XML。当我将 XML 文件下载到我的服务器时它可以工作,但当我将 XML 文件更改为 Web 上的位置时它不起作用。

例如,我正在尝试访问这个文件:http://www.w3schools.com/xml/note.xml

这是我的 JavaScript 代码(注意 HTML ):

function dashboardContent() {
html="";

xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET","http://www.w3schools.com/xml/note.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;

html+=xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;
html+=xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue;
html+=xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;

document.getElementById("contentArea").innerHTML=html;

}

在我的 Chrome Web App manifest.json 文件中,我将以下内容置于 Google 的 manifest requirement for Cross-origin XMLHttpRequests 权限之下:

{
    "name": "BirdTrax",
    "version": "0.1.1",

    "description": "Birding explorer to help you plan birding trips and find recently eBirded sightings, rarities, and checklists in your area",
    "icons": {
         "16": "icons/helloWorld_16.png",
        "128": "icons/helloWorld_128.png"
    },

    "app": {
        "launch": {
            "local_path": "main.html",
            "container": "tab"
        }
    },

    "background_page": "background.html",
    "options_page": "options.html",


"permissions": [
  "http://www.w3schools.com/*",
  "notifications",
  "unlimitedStorage"
],

    "incognito": "split"


}

我不确定我是否仍然缺少某些东西,但代码对我不起作用。有什么建议、提示、想法吗?我真的很感谢任何帮助!

【问题讨论】:

  • 该脚本放在哪个文件中?函数是怎么调用的?
  • @RobW 该函数在 元素加载时调用。 中链接的脚本作为默认第一页加载。
  • 我想我会复制 Google 自己的示例代码并尝试从那里开始工作。感谢您的帮助!

标签: javascript xml json google-chrome xmlhttprequest


【解决方案1】:

/ 之后的通配符就足够了。否则,您将允许您的扩展仅在根目录请求页面。

"permissions": [
  "http://www.w3schools.com/*",

在您的情况下,您只请求一个 URL。进一步限制模式可能会更好:

"permissions": [
  "http://www.w3schools.com/xml/note.xml",

【讨论】:

  • @wagtail 不要忘记(重新打包和)重新加载您的扩展程序。
  • 是的 :) 我做到了。但我现在不确定,也许错误在于我解析 XML 的方式。但是为什么当文件在我的服务器上时它会起作用呢?
  • @wagtail 你能提供更多细节吗? “当我将 XML 文件更改为 Web 上的位置时,它 (...) 不起作用。”是对您的问题的模糊描述。您的页面是否被重定向,例如 http://example.com/ 到 http://www.example.com/?这对 Chrome 扩展程序确实很重要。在这种情况下,还将重定向 URL 的位置添加到权限字段。
  • 如果我将网络上的 XML 文件保存到我的服务器,我可以离线访问同一个文件并成功解析它。但是,如果我尝试在线访问该文件,则该过程不会通过。因此,这不是我的解析错误,它只是权限错误或获取 XML 文档之类的错误。
  • @wagtail 你能展示你的实际代码(CRX /清单文件+请求者)吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-22
  • 2020-12-29
  • 1970-01-01
  • 2023-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多