为了账号安全,请及时绑定邮箱和手机立即绑定

将当前 iframe 内容导出为 HTML 文件

将当前 iframe 内容导出为 HTML 文件

蛊毒传说 2021-12-02 19:54:41
事情就是这样 - 我正在尝试创建一种电子邮件签名生成器。大部分的索引文件,都是纯 HTML 代码 + 微小的 javascript。在索引文件中,我将电子邮件签名模板作为 iframe/email_signature.html 文件嵌入。所以它看起来如下:<iframe src="email_signature.html" width="100%" height="350" frameborder="0" id="testing" name="emailSignature"></iframe>然后我尝试通过执行以下代码来下载此 iframe 的当前内容:$(document).ready(function() {        const innerFrame = document.getElementById('testing').contentWindow.document.body.innerHTML;    $("#cmd").click(function(){        exportFile('new-file.html', $innerFrame.innerHTML);    }); });但它不起作用。这是示例小提琴:https://jsfiddle.net/py1tojmc/我在这里做错了什么?
查看完整描述

2 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

是的,看起来按钮事件不会触发。但可能是跨源安全:

SecurityError: Permission denied to access property "document" on cross-origin object

但这可能只是 jsfiddle,你能放一个alert('cmd button works');just 来确保你的按钮触发吗?


查看完整回答
反对 回复 2021-12-02
?
狐的传说

TA贡献1804条经验 获得超3个赞

从我在打开 jsfiddle 的开发控制台中看到的内容来看,我没有看到任何“事件”附加到您的下载按钮上。 

//img1.sycdn.imooc.com//61a8b42500011cd518490891.jpg

我不能告诉你为什么会发生这种情况(我不是那个专家),但也许调用以.contentWindow.document.body.innerHTML;某种方式将 DOM 上下文更改为 iframe(只是猜测),而且您似乎无法再访问按钮 ID #cmd。


尝试像这样更改您的代码,看看它是否有效:


$(document).ready(function() {

    $("#cmd").click(function(){

        const innerFrame = document.getElementById('testing').contentWindow.document.body.innerHTML;

        exportFile('new-file.html', $innerFrame.innerHTML);

    }); 

});


查看完整回答
反对 回复 2021-12-02
  • 2 回答
  • 0 关注
  • 496 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信