Accessing Elements Inside iframe and body Tags with JavaScript

后端 未结 2 1620
伪装坚强ぢ
伪装坚强ぢ 2020-12-19 16:41

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

相关标签:
2条回答
  • 2020-12-19 16:57

    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'
    });
    
    0 讨论(0)
  • 2020-12-19 17:01

    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?

    0 讨论(0)
提交回复
热议问题