使用window.open打开存储在变量中的URL。

4
首先,我获取当前打开网站的URL并将该值存储在一个变量中。然后,我声明一个新变量,将“view-source:”与我之前声明的URL变量相加。这将打印出所述网站源代码的地址。
我想能够使用window.open,以便将第二个变量中存储的新值用作参数内的URL。以下是我的代码:
let page = window.location.href;
let sourcecode = "view-source:" + page;

window.open(sourcecode);

我该如何实现这个?或者,有没有一种方法可以通过JavaScript直接打开源代码?谢谢。


问题不在于打开url。它只是"view-source"从未被设计用于Javascript。它被视为本地资源。 - DarthCadeus
1个回答

4

在主流浏览器中,打开以view-source:开头的窗口(或链接)是不被允许的,这是一项安全问题

很遗憾,在已加载的页面中,没有通用的方法可以识别view-source内容。但是,在许多情况下,您可以重新获取页面,并检查响应文本。例如,如果您所在的URL是https://jsonplaceholder.typicode.com/,您可以执行以下操作:

fetch('https://jsonplaceholder.typicode.com/')
  .then(res => res.text())
  .then((responseText) => {
    console.log(responseText);
  });

如果HTML中最终的结束标签之前没有任何改变DOM的内容,那么您可以在解析结束前运行的脚本标签中可靠地检查innerHTML,例如:

console.log(document.documentElement.innerHTML);

但是,如果任何<script>在DOMContentLoaded之前改变DOM(许多<script>确实这样做),那么这种方法将无法生效。

在数据被记录到控制台后,是否可以查找特定术语或文本字符串? - TBG
当然,这可能是可行的,不过实际的代码当然会取决于具体的需求是什么。 - CertainPerformance
刚刚记录的数据中包含单词“正确”。我希望脚本查找该单词,然后获取整行文本以在警报中显示给用户。例如:答案是正确的!脚本将查找单词“正确”,然后使用alert()来显示整行“答案是正确的!” - TBG
将响应按行拆分,然后使用 .find 查找包含您要查找的单词的行:lines.find(line => line.includes('correct')) - CertainPerformance
你的回答比打开 view-source: 窗口好多了,哈哈,谢谢。 - brasofilo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接