我正在使用iframe上传图片,因此iframe包含一个上传按钮。然后它获取图像ID,这是保存到数据库所需的。在父页面上,我有一个保存按钮。但我希望隐藏此保存按钮,直到单击iframe上的上传按钮。我如何将iframe中的值传递给父级?所以我需要一些东西让我知道上传按钮已被点击。然后将该值传递给父级,然后显示保存按钮。 iframe中:
<tr>
<td>
<asp:LinkButton runat="server" ID="btnUpload" CssClass="btnUpload2" OnClick="btnUpload_Click" Text="Upload" />
</td>
</tr>
<tr>
<td>
<asp:FileUpload runat="server" ID="fuUpload" />
</td>
</tr>
</table>
</div>
<input type="hidden" id="FileNameHidden" style="display:none" runat="server" clientidmode="Static" />
修改
所以我将OnClientClick="IsPressed()"
添加到iframe中的上传功能并添加了此javascript代码:
function IsPressed() {
var pressed = "yes";
window.parent.uploadPressed(pressed);
}
然后在父母中我添加了这个功能:
function uploadPressed(pressed) {
$("#btnUpdateImage").show();
}
并在按钮上将visible设置为false:
<asp:LinkButton ID="btnUpdateImage" Visible="false" onclick="btnUpdateImage_Click" OnClientClick="CloseImage();return GetDbriefFilename();" CssClass="btnSaveSmall" runat="server" ></asp:LinkButton>
但是当我点击iframe上的uplaod按钮时,父节目上的保存按钮不会显示。我测试过,值正从iframe传递给父级,但为什么不显示保存按钮?
答案 0 :(得分:1)
您必须使用cross-document messaging。
例如在顶部窗口中:
myIframe.contentWindow.postMessage('hello', '*');
&#13;
并在iframe中:
window.onmessage = function(e){
if (e.data == 'hello') {
alert('It works!');
}
};
&#13;