使用PHP跨站点加载HTML内容
Use PHP for Cross Site Loading of HTML Content
也许这是一个愚蠢的问题,但我被这个问题搞砸了。
问题:通过javascript跨域加载网页并访问
中的变量和元素理论解决方案:- 用请求的URL作为参数发送一个ajax请求到本地php文件
- 获取加载页面的PHP文件
- 显示加载的页面,并可以访问指定 框中的元素
在我努力之前,像这样的事情可能吗?值得吗?我熟悉PHP简单HTML DOM解析器。
提前感谢,我已经在这个问题上花了不少时间。
<标题> 更新首先,javascript:
function loadTheUrl(x){ // x = the url, e.g. http://example.com
$.ajax({ url: 'loader.php', // explained below
data: {url: x},
type: 'get',
success: function(output) {
$('.loading-space').html(output);
}
});
}
调用本地PHP文件loader.php
loader.php
<?php
echo file_get_contents($_GET['url']);
就是这样。这工作,但它实际上给了我一些问题与CSS,我试图弄清楚。CSS也覆盖了我的网站。我想保留CSS,但将其限制在该div内。
<标题> 更新
一个半工作的例子。仅适用于Chrome由于数据:text/html.
HTML
<div value='http://example.com' onClick='javascript:loadURL(this)'>Click Here</div>
JavaScript function loadURL(x){
var xURL = $(x).attr('value');
$.ajax({ url: 'load.php',
data: {url: xURL},
type: 'get',
success: function(output) {
$('.page-loaded').attr("data", "data:text/html,"+output); // .page-loaded is an HTML object element
}
});
}
load.php
<?php
error_reporting(0);
$doc = new DOMDocument();
$doc->loadHTML(file_get_contents($_GET['url']));
echo $doc->saveHTML();
只是好奇为什么会有人投反对票。我本以为这个问题会更普遍?由于
更新
PHP方式不允许访问元素。CORS似乎是唯一的出路。只需将CSS限制在框内即可。
标题>标题>这是你想要做的吗?
<script>
$(function(){
$.get("youFile.php", function(data){
$("#container").html(data);
});
}):
</script>
您可以使用DOMDocument
,找到所有script
和link
标签,删除它们,并吐出HTML:
<?php
$doc = new DOMDocument();
$doc->loadHTML(file_get_contents($_GET['url']));
$internal_css = $doc->getElementsByTagName('style');
foreach ($internal_css as $css) {
$css->nodeValue = "#container_id " . implode(" #container_id ", explode("}", $css->nodeValue));
}
echo $doc->saveHTML();
相关文章:
- 如何根据html内容使用ng类-AngularJS
- JavaScript在其他页面上用html内容填充文本框
- Rails:如何在浏览器中显示动态html内容,而不会对其进行转义,也不会引起XSS攻击
- 使用javascript动态创建html内容/元素
- 无法将大型html内容POST到Chrome上的服务器
- 使用li元素的html内容更改该元素的背景
- 如何从ajax返回两个html内容
- jQuery获取子DIV的HTML内容
- HTML内容下推到固定背景图像下方
- 在angular中,使用ng repeat生成动态html内容
- 使用$watch更改html内容
- 如何使用window.showModalDialog()显示HTML内容
- 如何在使用 UIWebView 编辑 HTML 内容时正确调整输入语言更改 (LTR/RTL) 的文本对齐方式
- 获取垂直溢出容器的 html 内容
- 为数组中的每个项目追加 html 内容
- Dojo:在 iframe 加载时解析 HTML 内容
- 允许 Itemp 在 Enyo 中使用 HTML 内容
- 从选项卡中获取 HTML 内容
- 可以将HTML内容放在画布上(登录页)
- 只有当类是硬编码的时,才可以使用jQuery来显示/隐藏html内容