我正在为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标记,使文件与原始文件不同。
我还尝试查看outerHTML
,outerText
和textContent
,但他们都有同样的问题。
我知道Opera在这里没有做错任何事。服务器说这是一个text/html
,Opera只是通过text/html
的响应来做它通常做的事情。
因此,我的问题是:有没有办法让用户-JR获得原始响应?
答案 0 :(得分:0)
没有任何方法可以从JS访问预解析的标记。唯一的方法是使用XMLHttpRequest自己请求内容。