比方说,我旁边的iframe一个按钮,并在iframe是一个下载链接。 是否有可能,当我点击的按钮外,在iframe的下载链接被点击?
http://jsfiddle.net/idude/9RQ3N/
<button type="button">Click Me!</button>
<iframe src="http://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_a_download" height="400" width="800">
例如,在上述的jsfiddle链接,我怎么可能让这个W3的画面将只需点击按钮,可以下载?
提前致谢!
尝试(这种模式)
$(function () {
var url = ["http://example.org"]; // `url`, e.g., `http://example.org`
var iframe = $("<iframe>", {
"id": "frame",
"width": "400px",
"height": "300px"
});
$.when($("body").append(iframe))
.then(function (b) {
var img = $("<img>", {
"id" : "frameimg",
"width": "400px",
"height": "300px",
}).css("background", "blue");
var a = $("<a>", {
"href" : url[0],
"html" : img
}).css("textDecoration", "none");
var button = $("<button>", {
"html": "click"
}).css("fontSize", "48px")
.one("click", function (e) {
$(b).find("#frame").contents()
.find("body a")
.get(0).click()
});
$(button).appendTo(b);
$(b).find("#frame").contents()
.find("body").html(a);
});
});
的jsfiddle http://jsfiddle.net/guest271314/2x4xz/
要访问的iFrame DOM,所有你需要做的是:
var x = document.getElementById("myframe");
var y = x.contentWindow.document;
或者您可以通过使用获取的iFrame
window.frames[0]
或类似的东西,如果你不喜欢使用一个ID为iFrame的。
然后你就可以搜索文档中的东西,并触发该元素上的click事件。
y.getElementById("somButton").click();
Mozilla的JSChannel是专为通信到/往返使用POST iframe中。 你应该考虑检查出来。
一个例子声明
父HTML可能是
<script src="jschannel.js"></script>
<iframe id="childId" src="child.html"></iframe>
<script>
var myChildChannel = Channel.build(document.getElementById("childId").contentWindow, "*", "testScope");
myChildChannel.query({
method: "myMethodName",
params: "I'm Bob!",
success: function(v) {
alert(v);
}
});
</script>
现在的孩子:
<script src="jschannel.js"></script>
...
<script>
var myParentChannel = Channel.build(window.parent, "*", "testScope");
myParentChannel.bind("myMethodName", function(t, param) {
return 'you said "'+param+'"';
});
</script>
这在运行时,会产生和报警说你说:“我鲍勃!”
很明显,你可以做很多与此有关。 玩得开心 :)
由于正确地指出由@ssergei,这是不可能出于安全考虑。 这是我用来捕捉错误的jsfiddle: http://jsfiddle.net/9RQ3N/5/ 。
这是SecurityError
,谷歌Chrome浏览器抛出消息:
Uncaught SecurityError: Failed to read the 'contentDocument' property from
'HTMLIFrameElement': Blocked a frame with origin "http://fiddle.jshell.net"
from accessing a frame with origin "http://www.w3schools.com".
Protocols, domains, and ports must match.
从Firefox:
Error: Permission denied to access property 'document'
而从Safari浏览器:
Blocked a frame with origin "http://fiddle.jshell.net" from accessing a frame
with origin "http://www.w3schools.com". Protocols, domains, and ports must match.