我有一个包含一些隐藏字段的表单,这些字段仅根据是/否单选按钮问题的答案显示。
此表单在使用iframe的多个外部网站上使用,因此位于不同的域中。
如何根据是否显示这些隐藏字段来更改iframe的高度。显示/隐藏它们的方式是在单独的scripts.js文件中使用jquery show / hide。 E.g
$('#show').click(function(){
$('#additional_fields').show('fast');
});
$('#hide').click(function(){
$('#additional_fields').hide('fast');
});
<div id="additional_fields" style="display:none;"> hidden fields here
</div>
包含上述内容的iframe:
<iframe id="idIframe" src="http://websites.com/form.php" scrolling="no" height="1000" width="950" border="0"/>
更新
我设法使用以下
让它工作$("#idIframe", top.document).css({ height: 1750 });
但是,这仅在使用相同域时有效。
答案 0 :(得分:0)
向您的iframe提供ID
并使用jQuery height
函数:
$('#show').click(function(){
var newHeight = $("#idIframe").height() + 50;
$("#idIframe").height(newHeight);
$('#additional_fields').show('fast');
});
$('#hide').click(function(){
var newHeight = $("#idIframe").height() - 50;
$("#idIframe").height(newHeight);
$('#additional_fields').hide('fast');
});
演示如何更改iframe的高度:
答案 1 :(得分:0)
$('#show').click(function () {
$('#additional_fields').show('fast');
$("#idIframe").height($("body").height());
});
$('#hide').click(function () {
$('#additional_fields').hide('fast');
$("#idIframe").height(0);
});
答案 2 :(得分:0)
您需要使用context选项才能调用框架集。
$('#show').click(function () {
$('#additional_fields').show('fast');
$("iframe",window.document).height(150);
});
$('#hide').click(function () {
$('#additional_fields').hide('fast');
$("iframe",window.document).height(0);
});
原因是默认情况下Jquerys上下文设置为当前帧的文档,因此您需要手动设置上下文。
答案 3 :(得分:0)
我认为唯一的方法是使用postMessage
(https://developer.mozilla.org/en-US/docs/DOM/window.postMessage)将内容的高度发送到父窗口。
问题是父页面需要收听消息,所以这只有在你对它有一些控制权时才会起作用。
答案 4 :(得分:0)
我写了一个示例,在动画内容的同时调整iframe的大小。我想你应该在我的代码中找到你的解决方案:
http://algorhythm.de/tools/resizeable-iframe/
我的解决方案也只有在您使用父域和iframe的相同域时才有效。这是因为相同的原始政策:http://en.wikipedia.org/wiki/Same_origin_policy