2015-05-31 91 views
0

我的iframe嵌入這樣的:移除焦點與iframe頁面加載

<iframe id="foo" src="http://www.something.com" style="width: 90%; height: 300px"></iframe> 

每次頁面加載重點會從頁面頂部丟失,切換到這種I幀是在頁腳。我想知道如何從這裏刪除焦點,並使頁面加載「正常」?

謝謝!

更新:是的,IFRAME是從其他來源(不是同一個域)

+0

http://stackoverflow.com/a/15793882/859154 –

+0

你能分享iframe的正確URL嗎? –

回答

1

如果假定iframe不是從相同的域提供的..您可以將其他可調焦的dom元素放置在頁腳中的iframe之後,autofocus設置爲true。如果還是不行,請嘗試在父主窗口如下:

$(window).on('load', function() { 
    setTimeout(function(){$("body").focus()}, 100); 
}; 

或香草JS去

window.onload = function() { 
    document.getElementById("some-focusable-element-from-parent-window").focus(); 
}; 
+0

身體沒有相關的onload事件,我想你的意思是'窗口'對象而不是 –

+0

@A。沃爾夫......謝謝..更正... – dopeddude

0

加載假設你有一個相同的域iframe:

你可以這樣做:

$("#foo").on('load', function() { 
    $("body",parent.document).focus() 
}; 
+0

聽起來像一個跨域iframe,並認爲這是一個輸入屬性爲'自動對焦'設置 –

1

那麼有太多的事情可以做,例如在窗口load我們滾動到頂部與scrollTop函數,...等 但是,通過這種方法,當我們取消焦點,並在窗口完全加載時返回頂部時,它將帶來毛刺和沒有良好的效果。 經過一段時間的思考和經驗,我來與:

我們刪除iframe與顯示:無,當DOM準備好了。接下來,當窗口完全加載時,我們將它帶回。要做到這一點efficienly,我們寫的樣式類這樣的:

.display_none{ 
     display:none; 
    } 

,我們將這個類添加到我們的iframe,當文檔準備好,當窗口完全加載刪除此類。有代碼:

$(document).ready(function(){ 
    $("#myFrame").addClass("display_none"); 
    $(window).load(function(){ 
     $("#myFrame").removeClass("display_none"); 
    }); 
}); 

現在有一種情況,這將無法正常工作!如果iframe被創建並添加了另一個腳本,那麼可以加載dom,但不能加載iframe元素本身(因爲腳本可能還沒有創建它)!我的情況就是這樣。

SOLUTION: 把IFRAME在一個容器中,讓說DIV容器,並應用上面這個容器的製造方法。所有人都應該工作鎳!在dom加載時,div被隱藏起來,接下來當窗口完全加載時,它將它恢復原狀!你會得到你的iframe,它將被加載並顯示出來。沒有小故障,高效。

相關問題