我的本地主机上有一个 html 页面 - get_description.html
.
下面的片段是代码的一部分:
<input type="text" id="url"/>
<button id="get_description_button">Get description</button>
<iframe id="description_container" src="#"/>
单击按钮时 src
iframe 的设置为在文本框中输入的 url。以这种方式获取的页面非常大,有很多链接文件。我对该页面感兴趣的是 <div id="description">
中包含的一段文本。元素。
有没有办法减少加载到 iframe 的页面中链接的资源的下载?
我不想使用 curl,因为数据仅供登录用户使用,而且使用 curl 获取内容的步骤太复杂。 iframe 很简单,因为我在一个盒子上使用它,它发送正确的 cookie 来识别来自登录用户的请求,但问题是获取近 1 MB 的数据来保留 1 KB 的数据是非常浪费的并扔掉其余的。
编辑
如果建议的方法只适用于 Firefox,那很好,所以我添加了 Firefox 标签。此外,答案实际上可能来自 Firefox 附加组件技术领域,因此我也添加了该标签。
问题不是我找不到我要找的东西,而是问题很简单 iframe
方法很浪费。
我知道 Firefox 确实允许只加载页面的文本。如果你打开一个页面并按 Ctrl+U 你会被带到“查看页面源代码”窗口,如果你点击一个链接,这些链接将正常运行并且可以点击在源代码 View 中,新页面的源代码被加载到查看源代码窗口中,没有下载链接的资源,这正是我想要得到的。但我不知道如何访问此行为。
另一个例子是 Adblock 插件。它以某种方式在加载元素之前将其杀死。使用纯 Javascript 这是不可能的。因为它只是触发得太晚,无法及时干预。
最佳答案
Same Origin Policy禁止任何网页访问不同域中任何其他网页的内容,因此基本上您不能这样做。
但是,对于某些浏览器,似乎允许访问网页内容如果您尝试从本地网页访问它,这似乎是您的情况。
Safari、IE 6/7/8 是允许本地网页通过 XMLHttpRequest 执行此操作的浏览器(来源:Google Browser Security Handbook),因此您可能希望选择使用其中一种浏览器来执行您需要的操作(注意这些浏览器的 future 版本可能不再允许这样做)。
这个解决方案的一部分我只看到两种可能性:
- 如果您需要从获取内容的网页由您以某种方式控制,您可以创建一个更简单的界面让其他网页获取您需要的内容(例如允许JSONP请求)。
- 如果您需要从获取内容的网页不受您控制,我看到的唯一解决方案是直接从服务器登录获取内容服务器端(我知道您不会想这样做,但如果我之前提到的不可行,我看不出任何其他可能性)
希望对您有所帮助。
关于javascript - 有没有办法减少使用 Javascript 下载资源(图像/css 和 js 文件)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3232668/