Opera用户JS:如何获得RAW服务器响应?
-
10-10-2019 - |
题
我正在为歌剧写一些用户j。它根据没有扩展名的请求做出反应,例如 /stuff/code/MyFile
, ,或与JavaScript无关的一个,例如 /stuff/code/load.do
. 。响应的内容类型设置为 text/html
, ,即使它返回纯JavaScript源(text/javascript
)。由于我无法访问服务器代码,因此我只需要使用它。
现在的问题是,我想用线号等格式化源,并在Opera中显示。因此,我写了一些用户js以反应 AfterEvent.DOMContentLoaded
(也尝试了 AfterEvent.load
, , 一样)。它读取 e.event.target.body.innerHTML
要访问身体,即JavaScript代码。
如果仅源不包含HTML标签或比较操作员(<,>),那么仅此功能就可以很好地工作。由于确实如此,我永远不会得到想要的输出。歌剧似乎有一些内部逻辑来转换 text/html
- 响应为自己的表示格式。这包括删除HTML-TAG之后的CRLF,或将两个“匹配” <和>之间的代码(比较操作员!)一起处理到一条单行中,应用 =""
每个单词之后。
这就是问题所在。
如果我在没有用户JS的情况下请求相同的URL,然后查看“页面”的源头,我会看到一个干净的JavaScript代码与服务器发送的内容相同。这就是我想要访问的东西。
如果我使用 innerText
代替 innerHTML
, ,Opera将HTML标签剥离,使该文件也不同于原始文件。
我也试图看 outerHTML
, outerText
和 textContent
, ,但是他们都有相同的问题。
我知道歌剧在这里没有做错任何事情。服务器说这是 text/html
Opera只是按照A的做法 text/html
- 响应的范围。
因此,我的问题是:有什么方法可以使用用户JS获得未接触的响应?
解决方案
没有任何方法可以从JS访问预先放置的标记。唯一的方法是使用XMLHTTPRequest自己请求内容。