2010-10-20 53 views
2

我創建一個新的iframe,其追加到身體,然後嘗試獲得其「文件」變量,就像這樣:從jquery插件中獲取iframe的文檔變量?

var $iframe = $("<iframe name='my-frame'>"); 
$iframe.appendTo($("body")); 

var doc = null; 

if($.browser.msie){ 
    doc = window.frames["my-frame"].document; // 'access denied' in IE 
} else { 
    doc = $iframe[0].contentWindow.document; 
} 
doc.close(); 

這正常獨立,但一旦我嘗試從內做到這一點一個jQuery插件,IE給我'訪問被拒絕'。

(function($) { 
    $.fn.jqprint = function (options) { 

// the above code fails in IE with above error when inserted here 

    } 
})(jQuery); 

奇怪的是這兩種方式在IE瀏覽器上自己的,瀏覽器檢查的插入進行調試。

我猜這是某種範圍的問題,'文檔'不能從匿名函數或類似的東西訪問。任何指針?

回答

1

我不能在這裏重現這裏。即使沒有瀏覽器檢查,這兩種方式在IE6和IE7都可以正常使用jquery 1.4.2和1.4.3。

HTH

旁註:
出於某種原因[只在Linux上,只有IE7,IE6是罰款!],只要我添加例如doc.write()(doc.open(),...),甚至在一些setTimeout之後,大約每隔兩秒我重新加載頁面,iframe不會出現在頁面上。然後,$ iframe [0]仍然是一個對象,但$ iframe [0] .contentWindow未定義(也就是.readyState,.src,...),導致在上述代碼中出現「未指定錯誤」涉及jquery和一個靜態iframe。不過,在Windows上不可重現。