【发布时间】:2012-07-18 08:38:37
【问题描述】:
我想在 Firefox/Greasemonkey 用户脚本中以 document 检索 HTML 页面。
编辑:这不是跨域请求。
这是我的示例代码:
var r = new XMLHttpRequest();
r.open("GET", document.location.href, true);
r.responseType = "document";
r.send(null);
这看起来就像 https://developer.mozilla.org/en/HTML_in_XMLHttpRequest 中的示例,
但是r.send(null) 会导致TypeError。原因,而不是抛出!在try...catch 中换行不会改变任何东西,似乎回调或事件处理程序引发了异常:
TypeError: document.location is null
回溯指的是 Firefox 内部的 event.js 文件,但不是我的脚本。
删除设置responseType 的行会消除异常,添加回调则不会。
但是,响应是有效的,responseXML 提供了一个 DOM 树。
我正在使用 FF 13.0.1。
是我遗漏了什么还是这是一个错误?
解决方案:这与 Mozilla 的 Addon Builder 创建的扩展有关,而不是 Firefox。
【问题讨论】:
-
我在 Chrome 上收到以下错误:
XMLHttpRequest cannot load https://www.google.de/. Origin http://fiddle.jshell.net is not allowed by Access-Control-Allow-Origin.似乎很清楚...example here -
这是一个完全不同的问题。当然,当脚本源自
jshell.net时,不允许对google.com发出http 请求。将其作为用户脚本尝试,此错误将消失。 -
Firefox 中没有 event.js 文件。听起来您安装了一些扩展程序,可以查看所有 XHR 并以某种方式搞砸了.... 有问题的 event.js 文件的完整 URI 是什么?
-
你是对的。它不是 Firefox,而是使用 Mozilla 的 Addon Builder 创建的“Hello World”扩展。
标签: javascript firefox xmlhttprequest greasemonkey