Opera User-JS:如何获得原始服务器响应?

时间:2010-12-09 08:28:29

标签: javascript opera userjs

我正在为Opera编写一些用户JS。它对没有扩展名的请求做出反应,例如/stuff/code/MyFile,或者与JavaScript无关,例如/stuff/code/load.do。响应的内容类型设置为text/html,即使它返回纯JavaScript源(text/javascript)。由于我无法访问服务器代码,因此我只需要使用它。

现在的问题是我想用行号等格式化源代码并在Opera中显示它。因此,我写了一些user-JS来对AfterEvent.DOMContentLoaded做出反应(也试过AfterEvent.load,同样的事情)。它会读取e.event.target.body.innerHTML以获取对正文的访问权限,即JavaScript代码。

如果只有源代码不包含HTML标签或比较运算符(<,>),那么这一点就可以很好地工作。既然如此,我从来没有得到我想要的输出。 Opera似乎有一些内部逻辑可以将text/html - 响应转换为自己的表示格式。这包括例如删除HTML标记后的CRLF或两个“匹配”之间的代码<和> (比较运算符!)在每个单词之后应用=""一起压缩成一行。

这就是问题所在。

如果我在没有user-JS的情况下请求相同的URL,然后查看“页面”的来源,我会看到一个干净的JavaScript代码与服务器发送的代码相同。这就是我想要访问的内容。

如果我使用innerText代替innerHTML,Opera会删除HTML标记,使文件与原始文件不同。

我还尝试查看outerHTMLouterTexttextContent,但他们都有同样的问题。

我知道Opera在这里没有做错任何事。服务器说这是一个text/html,Opera只是通过text/html的响应来做它通常做的事情。

因此,我的问题是:有没有办法让用户-JR获得原始响应?

1 个答案:

答案 0 :(得分:0)

没有任何方法可以从JS访问预解析的标记。唯一的方法是使用XMLHttpRequest自己请求内容。