我们有一个我们无法触及源代码的应用程序。这就是为什么我不能将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内容?
答案 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')