1

我一直在閱讀很多關於如何在HTML呈現後立即執行更改的文章。Chrome擴展程序 - 在HTML打印前更改

假設我們應該從頁面上的所有iframe中替換SRC。如果我在document_end中執行此操作,則首先加載原始SRC,然後在加載.js時閃爍。

我想在開始時加載我的SRC的iframe,它會更平滑。

我一直在尋找webRequests,但不能得到它的工作:http://developer.chrome.com/extensions/webRequest

我怎麼能做出這樣的事情「之前」的代碼工作,因此「取代」的HTML,這將是印?

if ($('iframe').length){ 
    $('iframe').each(function(index) { 
     $(this).attr('src', 'http://www.google.com'); 
    }); 
} 
+0

你在說打印嗎?在@media打印?在標題中你說打印,在你說的渲染體內。您可能想編輯您的問題以保持一致。 – sowbug

回答

0

TL; DR版本:不能修改的I幀在所有,但可以呈現一個div修改網站。

好的,所以你根本不能修改iframe,但是你可以在div中渲染一個網站。這是一個非常冒險的解決方案,但它完成了工作(我不會在代碼中發佈解決方案,而是告訴您如何去做)

首先,用div替換iframe元素。這個div將包含修改後的網站。

然後,您需要獲取Google網站的內容。由於JavaScript有時候會有權限,所以我會提出兩種解決方案來獲取網站的內容。

  1. 使用PHP獲取網站的內容。在PHP中修改它甚至更容易!然後,您可以對PHP文件發出AJAX請求並獲取修改後的內容。

  2. 僅使用JavaScript,您可以使用AJAX獲取URL的內容。退房this topic

現在,因爲要修改一些HTML,你就必須做整個任何標籤的內容進行遞歸搜索,然後替換它們。請記住,如果你懶散地搜索它,你會得到一個半工作的過濾器。

我假設谷歌的引用文件本地,e.g logo.png,而不是http://www.google.com/logo.png。這意味着當它最終呈現時,您最終會遇到破碎的文件引用以及與Google沒有任何關係的網站。要解決此問題,請使用僅用於文件參考和URL的過濾器搜索內容。檢查URL是否爲徽標,您可以通過檢查URL是否包含http:// or https://來執行此操作。如果它不包含此項,請將http://www.google.com作爲URL的前綴。這應該會導致所有引用都被修復。

最後呈現的內容,只需將其添加到「IFRAME」分區。你應該給div一個寬度和高度,使它看起來更像是一個iframe。

我希望這有助於;)

1

嘗試Mutation Observers。我不確定它們是否觸發iframe,但是從技術上講,應該從操作DOM開始。