如何使用javascript下载网页的整个HTML?

如何使用javascript下载网页的整个HTML?,javascript,html,url,download,firefox-addon,Javascript,Html,Url,Download,Firefox Addon,在给定URL的情况下,是否可以使用JavaScript下载网页的整个HTML?我想做的是开发一个Firefox插件,下载在浏览器当前页面源代码中找到的所有链接的内容 更新:URL驻留在同一个域中对于JavaScript一般来说,简短的回答是否,除非所有页面都在同一个域中。JavaScript受限制,因此出于安全原因,您不能执行这样的跨域请求 然而,正如Max和erturne在评论中指出的,当JavaScript作为浏览器扩展/附加组件的一部分编写时,关于同源策略和跨域请求的常规规则似乎并不适用—

在给定URL的情况下,是否可以使用
JavaScript
下载网页的整个
HTML
?我想做的是开发一个Firefox插件,下载在浏览器当前页面源代码中找到的所有链接的内容


更新:URL驻留在同一个域中

对于JavaScript一般来说,简短的回答是否,除非所有页面都在同一个域中。JavaScript受限制,因此出于安全原因,您不能执行这样的跨域请求

然而,正如Max和erturne在评论中指出的,当JavaScript作为浏览器扩展/附加组件的一部分编写时,关于同源策略和跨域请求的常规规则似乎并不适用——至少对Firefox和Chrome不适用。因此,使用JavaScript下载页面应该可以使用XMLHttpRequest,或者使用您最喜欢的JS库中包含的一些包装器方法

如果您和我一样喜欢jQuery,那么可以看看jQuery的方法,该方法从给定资源加载HTML,并将其注入到指定的元素中

编辑:
根据外接程序对跨域请求的评论,对我的回答进行了一些更新

对于JavaScript,一般来说,简短的答案是否定的,除非所有页面都在同一个域中。JavaScript受限制,因此出于安全原因,您不能执行这样的跨域请求

然而,正如Max和erturne在评论中指出的,当JavaScript作为浏览器扩展/附加组件的一部分编写时,关于同源策略和跨域请求的常规规则似乎并不适用——至少对Firefox和Chrome不适用。因此,使用JavaScript下载页面应该可以使用XMLHttpRequest,或者使用您最喜欢的JS库中包含的一些包装器方法

如果您和我一样喜欢jQuery,那么可以看看jQuery的方法,该方法从给定资源加载HTML,并将其注入到指定的元素中

编辑:
根据外接程序对跨域请求的评论,对我的回答进行了一些更新

如果组合scheme://domain:port 对于承载应获取HTML的JavaScript的页面也是如此

许多JS框架为您提供了简单的XHR支持、Jquery、Dojo等。使用Dojo的示例:

function getText() {
  dojo.xhrGet({
    url: "test/someHtml.html",
        load: function(response, ioArgs){
      //The repsone is the HTML
      return response;
    },
    error: function(response, ioArgs){
      return response;
    },
    handleAs: "text"
  });
}

如果您喜欢编写自己的XMLHttpRequest处理程序,请看这里:

如果组合scheme://domain:port 对于承载应获取HTML的JavaScript的页面也是如此

许多JS框架为您提供了简单的XHR支持、Jquery、Dojo等。使用Dojo的示例:

function getText() {
  dojo.xhrGet({
    url: "test/someHtml.html",
        load: function(response, ioArgs){
      //The repsone is the HTML
      return response;
    },
    error: function(response, ioArgs){
      return response;
    },
    handleAs: "text"
  });
}

如果您更喜欢编写自己的XMLHttpRequest处理程序,请看这里:

如果您只是用心编写一个文本网页下载程序,并且您只知道
html
javascript
,那么您可以编写一个下载程序名称“download.hta”使用
html
javascript
来控制
Msxml2.ServerXMLHTTP.6.0
FSO
如果你只是用心编写一个文本网页下载程序,并且你只知道
html
javascript
,你可以编写一个下载程序名称“download.hta”使用
html
javascript
来控制
Msxml2.ServerXMLHTTP.6.0
FSO
应该可以使用jQuery ajax。Firefox扩展中的Javascript不受跨源限制。以下是在Firefox扩展中使用jQuery的一些技巧:

  • 将jQuery库添加到扩展的chrome/content/目录中

  • 在窗口加载事件回调中加载jQuery,而不是将其包含在浏览器覆盖XUL中。否则可能会导致冲突(例如,对用户自定义的工具栏进行重击)

  • 使用“jQuery”而不是“$”。我在使用$而不是jQuery时遇到了奇怪的行为(我想是某种冲突)

  • 使用jQuery(content.document)而不是jQuery(document)来访问页面的DOM。在Firefox扩展中,“document”指的是浏览器的XUL,而“content.document”指的是页面的DOM


  • 我编写了一个Firefox扩展,用于从我朋友的书签站点获取书签。它使用jQuery从他的服务获取JSON响应中的书签,然后创建这些书签的菜单,以便我可以轻松访问它们。您可以在

    浏览源代码,使用jQuery ajax应该可以做到这一点。Firefox扩展中的Javascript不受跨源限制。以下是在Firefox扩展中使用jQuery的一些技巧:

  • 将jQuery库添加到扩展的chrome/content/目录中

  • 在窗口加载事件回调中加载jQuery,而不是将其包含在浏览器覆盖XUL中。否则可能会导致冲突(例如,对用户自定义的工具栏进行重击)

  • 使用“jQuery”而不是“$”。我在使用$而不是jQuery时遇到了奇怪的行为(我想是某种冲突)

  • 使用jQuery(content.document)而不是jQuery(document)来访问页面的DOM。在Firefox扩展中,“document”指的是浏览器的XUL,而“content.document”指的是页面的DOM


  • 我编写了一个Firefox扩展,用于从我朋友的书签站点获取书签。它使用jQuery从他的服务获取JSON响应中的书签,然后创建这些书签的菜单,以便我可以轻松访问它们。您可以在

    上浏览源代码,它类似于吗?它类似于吗?您不能使用XMLHttpRequest获取这些页面吗?@Nobita只要资源位于不同的域上就可以了。XMLHttpRequest受同源策略的限制。但是,只要请求在t内发布,就可以使用它