2011-02-24 114 views
1

我目前正在使用Google Chrome擴展程序開發覆蓋圖。 讓我來解釋一下這個架構。我在他的content_script中有我的擴展名:overlay.js。該文件將注入我在網頁上的工具欄使用從iframe中刪除網頁

overlayURL = chrome.extension.getURL("overlay.html"), 
iframe = $('<iframe id="YouroverlayFrame" src="'+overlayURL+'">'); 

body.append(iframe); 

所以進球是overlay.html將出現在我的窗口頂部。但我有一個小問題,那就是我的iframe,隱藏了我正在訪問的真實網頁。所以我想知道如何可以將所有網頁取下來:40px,然後覆蓋層不會覆蓋網頁。

例子更容易:

隨着覆蓋:http://img259.imageshack.us/img259/2329/withy.png

沒有覆蓋:提前http://img717.imageshack.us/img717/1708/without.png

感謝。

編輯:24/02/2011 - 18:49

我已經嘗試過這樣的:

<script type="text/javascript"> 
    document.getElementById('body').setAttribute("style", "margin-bottom: 40px;"); 
</script> 

但沒有奏效。

回答

0

如果您可以將HTML注入頁面(如iframe),那麼您應該能夠在iframe的高度量的<body>標記的頂部添加頁邊距。那應該修復它爲網站。

在JavaScript它會是:

document.getElementsByTagName('body')[0].style.marginTop = '30px'; // or whatever your height is 

讓我知道這是否爲你。

+0

這就是我試過,但它沒有奏效。 Sindar 2011-02-24 17:48:43

+0

我想知道這是否也取下了'position:absolute'元素。他們會留下還是將他們搬走? – pimvdb 2011-02-24 17:49:26

+0

查看我添加的代碼。 ''body''不是身份證。所以你需要獲得頁面上元素的第一個元素,它們是'body'元素。此外'底部邊距'不存在,並且位於元素的錯誤末端。你的可能會改爲:'document.getElementsByTagName('body')[0] .setAttribute('style','margin-top:40px;');'應該指出的是,這將吹走任何其他樣式在body標籤的'style'屬性上。 – sholsinger 2011-02-24 17:50:01