2012-04-09 18 views
1

是否有可能有一個JavaScript文件知道兩個不同的HTML文件?我該怎麼做?JavaScript文件修改它不被調用的HTML文件? jquery選擇器

我希望能夠有兩個頁面。 index.html和pictures.html。我有一個index.js,它改變了index.html的顯示屬性(它將基於人的數據放入表中並使其看起來不錯)。我想這個當前的index.js文件也能夠編輯pictures.html文件並在那裏改變信息。 index.html會鏈接到pictures.html以顯示一個人的照片(根據我的人名保存smith1.jpg,smith2.jpg,reagan2.jpg等)。無論如何,這個JavaScript文件可以基於它們的id或第二個文件類(pictures.html)獲取DOM元素,即使它「存在於」index.html中嗎?當我說生活在它被稱爲index.html頁面的頂部。

謝謝

回答

2

如果腳本以某種連接方式加載,則腳本可以訪問另一頁上的元素。

例如,如果使用var popup = window.open()進行彈出式窗口,則返回值將包含對打開的彈出窗口的引用,並允許訪問彈出窗口中的元素。例如。 popup.document.getElementById('something')。在幀中加載的頁面,iframe等都有類似的訪問方式。

所以是的,如果你的頁面加載第二頁,它的腳本也可以在那裏工作。我建議,除了通過腳本打開和關閉彈出窗口之外,避免這種情況;一個腳本應該保留在它的頁面框中,如果它需要在另一個頁面上執行更大的操作,那通常意味着你需要稍微改變你的代碼體系結構。

+0

同意...技術上真實(+1)。但是,我們不能說這些不是一流的網頁......而且不應該是模式中的第一選擇? – Luke 2012-04-09 22:27:52

+0

這是一件可怕的事情,但它的工作原理。除了關閉主腳本的彈出窗口之外,我還沒有找到任何應​​用程序。 – Armatus 2012-04-09 22:29:37

+0

漂亮的黑客我用這個當前的問題(由於時間限制),但在將來我絕對應該使用某種服務器端腳本。 – 2012-04-10 23:06:57

2

您需要了解服務器端編程以實現您的目標。 http://en.wikipedia.org/wiki/Server-side_scripting

......或者你可以編寫一個客戶端應用程序,其中「頁面」是一個實際頁面的獨立視圖或從後臺數據結構生成。如果你想要堅持創建/編輯的內容,你仍然需要服務器端編程。

+0

感謝您的快速響應,沒有辦法做到這一切客戶端呢? – 2012-04-09 22:16:49

+0

不是沒有服務器端組件的味道。你有使用服務器端語言的經驗嗎? – Luke 2012-04-09 22:18:58

+0

只是在軌道上的一點紅寶石,我想我要看看服務器端的JavaScript,總是感興趣的我,我只是從來沒有去探索它。謝謝 – 2012-04-10 23:05:42

1

您也可以使用html5(group of technologies)postmessage api。這允許您將消息發送到另一個頁面,並且在該頁面中定義了知道如何處理消息的事件處理程序。

這也適用於各個域。

下面是一個例子,我只是隨機通過谷歌找到了一個博客: http://robertnyman.com/2010/03/18/postmessage-in-html5-to-send-messages-between-windows-and-iframes/

+0

令人興奮的HTML5新功能......但請確保您知道您的用戶羣和他們的瀏覽器是否有能力。選擇此解決方案會增加對用戶瀏覽器功能的依賴性。 – Luke 2012-04-09 22:40:08

1

無法在客戶端上,如果編輯實際的HTML文件是你的目標。如果根據用戶在另一個頁面上做的事情讓照片顯示出來,那麼您只需關心一下,然後就有很多選項。

  • 您可以通過小套喜歡的用戶通過cookie進入表用於訪問預先建立方案的圖像文件的右套東西的數據。這實際上會持續到用戶清除cookie。

  • 您可以將這兩個頁面都包含在同一域iframe元素中,而父元素只包含JS。這將允許你在頁面之間持久化數據並對iframe加載事件作出反應,但是像客戶端JS中的所有內容一樣,當你重新加載頁面時,這些都消失了。

  • 新版瀏覽器有不全面的安全惡夢工作文件訪問對象。這些都是新的和不夠標準的,所以需要做一些工作才能使它適用於多種瀏覽器。這可以用來保存包含用戶在返回站點時可能不得不提示上傳的信息的文件。

  • 如果數據的不敏感,你可以發揮創意和使用其他服務來隱藏數據的集合。使用twitter API將數據推送到Twitter帳戶的一些公開顯示的頁面(如果您在此處做的不僅僅是一個孤立的課程項目,請查看服務條款)。然後對其公開可見的任何URL執行Ajax get請求,並解析HTML數據。

我想看的其他東西:dataURIs,html5本地存儲。

注:這些都不是我會認真考慮的,其中數據預計將持續或以任何方式保證無論在用戶從訪問它的專業的網站的方法。

相關問題