2011-11-01 25 views
2

iframe內如果我創建一個元素與...的createElement只在主文檔不在文檔

var elm = document.createElement("p"); 
document.body.insertBefore(elm, document.body.firstChild); 

我得到了每一個body元素中這對元素 - cooool!
而且在主文檔中每一個IFRAME體。

我怎麼能定義只是在maindocument創作? 有點像?

document.body.firstChild.ownerDocument 

(腳本應該做的是通過Safari擴展從injected.js工作)

+0

我會擺脫計算器遠。我覺得被指責「管理員」 – frank

回答

0

我得到這個對每一個元素body元素中 - cooool!

您應該只在文檔所具有的一個單一主體中獲取它。

而且在主文檔中每一個IFRAME體。

這些是單獨的文檔,除非您在嵌入式文檔中包含該代碼,否則該代碼不應觸摸它們。

如果你包括這些文件中的代碼,那麼你可以測試一下,看看如果你(不)在一個框架:

if (top === window) { 
+0

花式 - 本土 - 簡單 - 工作!非常感謝你。 – frank

0

插入到體內的firstChid:

var elm = document.createElement("p"); 
var body = document.body; 
body.insertBefore(elm, body.firstChild); 

編輯:http://jsfiddle.net/vgbsf/1/

+0

這將錯誤作爲'document.body [0]'將'未定義'。 – Quentin

+0

@Quentin您的權利 - 更新和驗證 – ManseUK

+0

沒有,除了存儲'document.body',你的代碼是相同的,原來的問題的。 – Quentin

0

如果我正確理解你的問題,你可以使用jQuery:

$('body').prepend("<p>im new here...</p>")

檢查 - http://jsfiddle.net/HLQ8W/

+0

多數民衆贊成在.. ..但我想要一個非jQuery的解決方案。是一個由在這種想法不降低從而pageloading Safari瀏覽器的性能驅動..因爲擴展,將在每一個頁面加載,只是爲了做這個工作..我真的想同樣的想法,作爲第一.. – frank

+0

並通過方式,原生javascript儘可能兼容。 :-P – frank