我正在为歌剧写一些用户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, outerTexttextContent, ,但是他们都有相同的问题。

我知道歌剧在这里没有做错任何事情。服务器说这是 text/html Opera只是按照A的做法 text/html- 响应的范围。

因此,我的问题是:有什么方法可以使用用户JS获得未接触的响应?

有帮助吗?

解决方案

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top