Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScript获取远程页面的内容?_Javascript_Get_Webpage - Fatal编程技术网

如何使用JavaScript获取远程页面的内容?

如何使用JavaScript获取远程页面的内容?,javascript,get,webpage,Javascript,Get,Webpage,我有一个来自不同域的远程页面的URL,我必须下载、解析和更新当前页面的DOM。我已经找到了使用新ActiveXObject(“Msxml2.XMLHTTP”)实现这一点的示例,但我想这仅限于IE和使用新的java.net.URL,但我不想使用java。还有其他选择吗?这个对象对于大多数现代浏览器来说都是通用的,并且是AJAX web应用程序的动力。同样的域策略也会让您受益匪浅 1) 通过您的服务器进行代理。浏览器->您的服务器->他们的服务器->您的服务器->浏览器 2) 使用闪光灯或silve

我有一个来自不同域的远程页面的URL,我必须下载、解析和更新当前页面的DOM。我已经找到了使用新ActiveXObject(“Msxml2.XMLHTTP”)实现这一点的示例,但我想这仅限于IE和使用新的java.net.URL,但我不想使用java。还有其他选择吗?

这个对象对于大多数现代浏览器来说都是通用的,并且是AJAX web应用程序的动力。

同样的域策略也会让您受益匪浅

1) 通过您的服务器进行代理。浏览器->您的服务器->他们的服务器->您的服务器->浏览器

2) 使用闪光灯或silverlight。第三方必须允许您访问。javascript和flash之间的桥梁对于大量数据来说不是很好,而且存在bug。Silverlight不像flash那样无处不在


3) 使用标签。这真的不安全。。。只有当第三方内容是有效的javascript时才有效。

如何通过AJAX加载PHP脚本,而AJAX不执行
文件获取内容()
?这应该适用于不同的领域。如果我理解正确的话。

编写一个服务器端脚本,为您检索页面内容是一个不错的选择。您可以使用XMLHttpRequest对象对该脚本进行AJAX调用,这将为您完成所有html(?)


尽管如此,我还是建议不要这样做。我不知道你到底有多信任另一个网站,但同一来源政策的存在是有原因的。你到底想做什么?通常,有一个解决办法。

我认为,根据同一原产地政策的限制,您无法做到这一点。两个域使用iframe在两个域之间进行通信。我们也可以使用JS代码,但两个域中都需要有通信代码。子帧可以与祖父母帧(窗口)接触,但不能在此处

因为您同时引用了其他url

唯一的方法是使用服务器端代码访问其他域上的内容。

只需使用PHP:

<?php
$url = "http://www.domaintoretrieve.com";

ob_start();
include_once( $url );

$html = ob_get_contents();
ob_end_clean();

?>


$html包含需要操作的整个页面。

您可以控制其他域吗?如果他们创建了一个标准,那么www.datejs.com可能仍然可以使用AJAX进行此操作…尽管我不推荐使用AJAX…这基本上是Steve Brewer建议的。但如果可能的话,我宁愿避免使用代理。同源策略是安全的方法。其他网站有API?Google Finance API不提供获取股票报价的方法,但是正如这里提到的,有一种方法可以获取这样的报价:那么,您正在尝试从Google Finance检索股票报价?这有助于明确您想要实现的目标:-)@JorenB是的,我正在尝试获取股票报价,可能还有一些其他补充信息,这些信息是使用此非官方API提供的:)本地运行的bookmarklet会受到同样的限制吗?