javascript - 将外部页面源存储在 Javascript 变量中?

标签 javascript jquery html

严格使用 Javascript,是否可以调用远程 URL 并将其存储在变量中?要指定,这不会在同一个域中。基本上,我正在尝试找出在 chrome 扩展程序中抓取/解析数据的最佳解决方案。

最佳答案

如果您尝试从外部域加载页面,您将遇到 same-origin policy .您可以通过在您自己的站点上设置一个简单的代理来绕过此限制。这将是一些服务器端代码,其功能是代表您向外部页面发出 http 请求,检索响应,然后将该内容返回给发出原始请求的页面异步 JavaScript 代码。

因此,如果您在 /your_internal_proxy.foo 中设置代理,并且您使用的是 jQuery,则可以构建如下所示的 JS 函数:

var foreignContent = {};
var loadPage = function(pageURL,varName) {
  $.ajax({
    type: 'get',
    url: '/your_internal_proxy.foo',
    data: {
      url_to_get: pageURL
    },
    success: function(result) {
      foreignContent[varName] = do_something_to( result );
    }
  });
};​

然后,将内容加载到 JS 变量中:

loadPage('http://www.google.com/','goog');
loadPage('http://stackoverflow.com','stack');

关于javascript - 将外部页面源存储在 Javascript 变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9811445/

相关文章:

javascript - 在 PyCharm 中使用 KnockoutJS 解决 "Unresolved function or method observable()"警告

javascript - 使用 js 和 css 隐藏/显示 div 中的内容

javascript - 使用网站输入运行 python 脚本

javascript - 如何在 Angular JS Web 应用程序中使用 ckeditor?

html - 如何让 float 的div填满空间

javascript - 移动字符串的各个部分

javascript - html 将整个 Canvas 旋转90度

javascript - testcafe requestLogger 仅记录 fixture 中的第一个测试

javascript - 这个 JavaScript 是如何工作的?

jquery - 如何在点击退出时关闭模式弹出窗口?