更改动态创建的iframe的内容

时间:2015-10-02 11:03:14

标签: javascript jquery iframe

我们有一个我们无法触及源代码的应用程序。这就是为什么我不能将javascript代码注入iframe。我尝试通过jQuery和JavaScript操作图像按钮src,如下所示:

// there isn't id of the iframe so I used to catch by tag
$("input:image", window.parent.frames[0].document).each(function() {
    $(this).attr("src", "http://" + document.location.hostname + "/theme/img/buttonDownArrow.png")
});

// other attempt
document.getElementsByTagName('iframe').onload = function() {
    $("input:image", window.parent.frames[0].document).each(function() {
        $(this).attr("src", "http://" + document.location.hostname + "/theme/img/buttonDownArrow.png")
    });
}

但没有任何事情发生。当iframe加载正常后,我在控制台中尝试上面的代码。我把源代码放在页面的末尾,但也没有发生任何事情。无论如何操纵加载的iframe内容?

2 个答案:

答案 0 :(得分:0)

这可能取决于在不同的域上。如果iframe与iframe中加载的页面位于不同的域中,那么在尝试操作代码时可能会遇到安全问题"从上面"就像你试图影响#34;下面的框架一样。

答案 1 :(得分:0)

我通过以下方式解决了这个问题。Thanks Martin for the snippet

    $('[data-dojo-attach-point="iframeViewer"]').ready(function() {
      $('#form1').contents().find('input:image').each(function() {
        $(this).attr('src', 'http://' + document.location.hostname + '/theme/img/buttonDownArrow.png');
        $(this).addClass('modifyComboArrowButton');
        $(this).hover(
        function() {
            $(this).attr('src', 'http://' + document.location.hostname + '/theme/img/buttonDownArrow_hover.png')
        },
        function() {
            $(this).attr('src', 'http://' + document.location.hostname + '/theme/img/buttonDownArrow.png')
        })
      });

      $('.ComboBoxDelButton').each(function() {
        $(this).addClass('modifyComboDeleteButton');

        $(this).hover().addClass('modifyComboDeleteButton:hover');
      });
    }) 

这是棘手的部分:

$('#form1').contents().find('input:image')