我用了一個網站,看起來像這樣的身體:使用Greasemonkey的一類添加到一個iframe
...
<body>
<iframe src="blabla/blabla..."></iframe>
</body>
...
的iframe
負荷來自同一個域不同的HTML文件;它有它的自己的身體
在Firebug中,它看起來像這樣:
...
<body>
<iframe src="blabla/blabla...">
...
<body class="classname ">
...
</body>
</iframe>
</body>
...
問題是這樣的:該網站是比較容易的方式來查看,如果我可以添加第二個類名到第二主體,像這樣:
...
<body>
<iframe src="blabla/blabla...">
...
<body class="classname classname2">
...
</body>
</iframe>
</body>
...
我沒有自己的域名,我只是想'重新混合'web內容。
我嘗試這樣的東西:
// ==UserScript==
// @name descr
// @namespace http://localhost
// @description descr
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js
// @include http://web.site/sub.ab*
// ==/UserScript==
$("iframe").load(function(){
alert(document.getElementById('frameid').contentDocument);
});
他們的想法是用
document.getElementById('frameid').contentDocument.document.getElementsByTagName('body')[0].addClass('classname2')
但它不工作。試用相同的使用contentwindow
,沒有什麼了。警報告訴我有一個指定的元素:[object HTMLDocument]
,但是當我輸入任何內容時,如.document
,警報變爲空,或根本不顯示。
我在做什麼錯?
編輯:不知道這與它有什麼關係,但我忘了告訴其實有2個iframe:一個被Adblocker阻止,這就是爲什麼我之前沒有提到過這個。
此問題中的示例GM腳本使用jQuery 1.2.6版。希望這是一個錯字;建議您使用jQuery版本1.6.2。 –
這可能是因爲在執行greasemonkey時尚未加載框架,因此等待iframe的加載可能會有所幫助。 – Kornel