簡體   English   中英

頁面加載(JS)后如何更改內容?

[英]How to change content after page is loaded (JS)?

我希望在頁面加載后運行javascript,如下面的示例中所示,延遲6秒。 頁面加載后立即丟失了其余的JS(顯而易見)...有任何想法如何在頁面加載后如何更改內容而無需單擊按鈕?

javascript:window.location = "http://example.com"; 
setTimeout(function() {
    document.getElementById('lightbox').style.display = 'none';
}, 6000);

設置window.location后,將在瀏覽器加載新頁面之前卸載原始頁面。 這意味着您的腳本將在新頁面開始加載之前消失,因此無法再修改新的HTML。

此行為是瀏覽器的安全模型所固有的。 沒有它,您可以將任何JavaScript注入您選擇的任何網站,這將帶來巨大的安全風險。 您需要的是所謂的XSS(用於跨站點腳本),通過瀏覽器應用所謂的SOP(用於相同原始策略)可以防止這種情況。

有一些常見的方法可以安全地解決此限制:

  1. 設置代理以同時服務您的JavaScript和原始站點。 這樣,您的腳本和原始站點都來自同一域,並滿足瀏覽器的原始策略(SOP)。 您可以在iframe中運行原始網站,而自定義腳本將占據頂層窗口。 或者,您可以將腳本注入HTML中,因為通過代理檢索腳本時會將其注入HTML中。

  2. 將腳本作為瀏覽器加載項或用戶腳本運行。 如果選擇執行此操作,則用戶將必須特別授予您的腳本權限,以提升的權限在本地運行。 Greasemonkey在幾年前就為Firefox普及了客戶端腳本,但是最近它們似乎失去了動力。

  3. 要求網站所有者包括您的腳本。 我懷疑這是否適合您的情況。 但是,如果這是一個有效的選擇,那肯定是最簡單的選擇。

  4. 要求用戶在網站加載后運行您的腳本。 這可能對您也無效,但是如果有效,它將再次是一個非常簡單的解決方案。

您的示例顯示您首先要重定向,然后嘗試隱藏#lightbox。 該腳本不起作用,因為在#lightbox隱藏之前,您正在將瀏覽器重定向到另一個站點。

簡而言之,如果將用戶重定向到另一個URL(甚至是相同的URL),則不能讓上一頁的Javascript操作下一頁的DOM。 只有“當前打開的頁面上”的Javascript可以操縱當前打開的頁面,而不能操縱其他頁面。

我不明白你在說什么。 JS丟了嗎? 請更清楚。
我認為您正在談論的是在DOM准備就緒后運行的jquery ready函數。
否則,請嘗試使用window.onload()函數。

這應該做的工作:

$(window).bind('load', function() {
// your code here
});

然后只需使用.delay("6000");將延遲添加到添加的代碼中.delay("6000");

插入的代碼僅在頁面完全加載時運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM