簡體   English   中英

將iframe添加到文檔中時,如何防止其重新加載?

[英]How do I prevent an Iframe from re-loading when adding it to the document?

我們正在使用simplemodal jquery插件來托管iframe作為對話框的內容。 關閉對話框后,simplemodal將對話框內容(包裝在div中的iframe)從文檔中刪除,然后將其重新添加到文檔中。

以下標記說明了將簡單模態排除在等式之外而出現的問題。 在本文中,我只提及simplemodal來說明為什么刪除和重新添加iframe。

當iframe重新添加到文檔中時,如何防止iframe重新加載其內容?

任何幫助將不勝感激!

的test.html


<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
        iframe{ padding: 0px; margin: 0px; width: 300; height: 300; }
    </style>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $("#go").click(function() {
                var frame = $("#myframe");

                frame.remove();
                frame.prependTo("body");
            });
        });
    </script>
</head>
<body>
    <iframe name="myframe" id="myframe" src="test2.html"></iframe>
    <div>
        <button id="go">GO</button>
    </div>
</body>
</html>

test2.html


<!DOCTYPE html>
<html lang="en">
    <head>
        <title></title>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                alert("this should not get called when the iframe is re-added to the document");
            });
        </script>        
    </head>
    <body>
        This is iframe content.
    </body>
</html>

我認為如果使用remove()是不可能的。 但是也許您可以嘗試其他方法,例如更改其大小,顯示:無,不透明度:0,可見性:隱藏或其他。 您是否嘗試過detach()? 在jQuery文檔中說:要刪除元素而不刪除數據和事件,請改用.detach()。

您可以從HTML字符串創建模態,而不是從頁面上的元素創建模態。 這樣,插件無需從文檔中刪除iframe,將其放入模式中,然后在模式關閉后將其移回。

我唯一想做的技巧是將iframe添加到body元素並將其設置為display:none; position:absolute; display:none; position:absolute; 然后將一個占位符元素插入到簡單模式中,當顯示模式時,使iframe可見並將其位置更改為占位符的位置(也匹配高度和寬度)。

它可能也需要弄清楚z-index等等,但這意味着您不必附加/添加/以其他方式更改DOM,從而避免了重新加載。

否則,我建議您使用div + AJAX。 然后,對於iframe來說,對我來說效果要好得多,您不必同時對iframe和輔助頁面進行樣式設置。 我不知道這是否適合您的需求,但我建議您至少檢查一下。

那可能無法解決您的問題,但值得一試。.您無需在prependTo之前調用remove。

prependTo將有效地將其移出當前位置,並將其重新連接到DOM中的其他位置。 它不會復制它,因此您無需“刪除”原始文件

也許這樣可以防止iframe重新加載。

雖然,我確實同意@Ryuu的回答,但完全不理會iframe是最好的選擇。

暫無
暫無

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

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