2017-04-02 29 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指令和插值({{}}),您可以實現結果。

相關問題