2017-04-02 62 views
0

给定完整的页面a.html,是否可以构建包含JavaScript的b.html,以便b从a.html获取数据并将数据输出到b.html的窗口?也就是说,是否有像src = whatever.js这样的东西可以声明另一个HTML页面的变量,所以像这样的东西可以工作(显然不是这样)?HTML/JavaScript对可以引用另一个HTML文件吗?

<html> 
<head> 
    <title>b.html</title> 
</head> 
<body> 
    <script> 
    var images = a.document.body.getElementsByTagName ("img"); 

等再次

感谢您的帮助!我看到上面的'可能有你的答案',但是它使用了JQuery,我没有找到它。

+0

你可以只用拉AJAX的文件及掌掴内容到页面上的容器。 – CollinD

回答

1

简单的答案是'不,javascript明确禁止访问本地文件系统,所以即使它们驻留在同一个文件夹中,a.html也无法读取b.html的内容'。但是,如果这两个服务都是由Web服务器提供的,那么您可以随时要求它为您提取a.html,然后使用javascript解析它,并向用户隐藏信息,然后提取信息你需要它。

看看下面一个相当笨拙的例子,使用不可见的iframe HTML元素 - 基本上是一个容器,你可以放在页面上并加载不同的页面,然后访问它的DOM树。 (有限制,以防止XSS攻击,但因为这两个a.html和b.html来自同一个域名,这些都不在你的情况适用。)

a.html

<!doctype html> 
<html> 
<head> 
...... 
</head> 
<body> 
... 
<div id=aa> 
Some interesting stuff... 
</div> 
... 
</body> 
</html> 

b.html

<!doctype html> 
<html> 
<head> 
...... 
</head> 
<body> 
... 
<iframe src="a.html" onLoad="alert('The contents of div with id=aa from a.html is: ['+this.contentDocument.getElementById('aa').innerHTML+']');"></iframe> 
... 
</body> 
</html> 

这里,它加载整个文档a.html到元素页面b.html(您可以通过使无形的,比如CSS),一旦它的加载,它提取最后从页面a.html(现在可通过当前的b.html页面的DOM中的iframe对象访问)访问DOM树中的ssary div,并利用其innerHTML属性证明它可以访问它。

此处,页面b.html上的iframe对象的contentDocument属性指向我们已加载到iframe中的页面的普通“文档”对象,为我们提供了处理任何页面时的所有选项有它的文档根。

这个例子当然很多都很笨拙,尤其是你在浏览器中加载了两个页面(b.html和a.html)(尽管a.html是不可见的),而不是一个,这就是效率不高。

但它是一个开始和真的简单的场景可能是适当的,如果单纯的解决方案)

+0

你的简单答案和更长的答案都很好地满足了我的问题。谢谢! – failure

-1

我会建议使用角1.x这种问题。您可能有两个或更多的html文件共享相同的控制器。使用ng-model指令和插值({{}}),您可以实现结果。

相关问题