I\'m writing a GreaseMonkey script that modifies an attribute of an element with a specific ID, but I\'m having some problems accessing it due to a nontraditional HTML hiera
The best way, IMO, to do this is to listen for the load
event fired by the iFrame, then look into the iFrame DOM as need. This guarantees that you'll have the iFrame DOM available when you need it and take a while shot.
$('#iframeID').on('load', function ()
{
alert('loaded'); // iFrame successfully loaded
var iFrameDoc = $('#iframeID')[0].contentDocument; // Get the iFrame document
$('body', iFrameDoc).attr('attribute', 'new value'); // Get the 'body' in the iFrame document and set 'attribute' to 'new value'
});
You first need to pull the document of the <iframe>
:
document.getElementById('iframeID').contentDocument
.getElementById('bodyID').setAttribute("attribute","value");
Live DEMO
BTW, if you want to get the <body>
node, you don't need to give id or something like that, simply:
document.body
In your case, it's the document of the <iframe>
:
document.getElementById('iframeID').contentDocument.body.setAttribute("attribute","value");
A lot simpler... Isn't it?