FireFox下的JS调用innerHTML无效

今天试了一下,在FireFox下调用

document.getElementById("id").innerHTML = "<img src='http://www.xxx.com/a.gif'>";

但是在Firefox下图片居然没有显示,在IE下完全正常,后来查了一下,FF真的不支持innerHTML方式的图片显示,换成文字就可以。

解决方法是:

预先在把该图片加载(直接放在页面,通过css的display:none把该图片隐藏了),就可以了。

就是把<img src="http://www.xxx.com.com/a.gif"  style="display:none;" />直接放在页面的某个地方。

还有有趣的方法是在js function中加上alert()就正常了,或者提交前return false也是ok(Cancel掉提交动作)。用过flush(),不行,其它的方法也不行。具体原因不知道。

<think>在Vue应用中调用浏览器打印功能时,浏览器默认会在打印页面的头部和尾部添加一些信息,如URL、日期和时间等。这些信息是由浏览器控制的,无法直接通过Vue代码完全去除。但是,我们可以通过CSS的媒体查询来隐藏这些信息。 根据参考引用[1]和[2],它们使用了`v-print`指令来实现打印功能。实际上,`v-print`是一个基于Vue的打印指令,它封装了打印的流程。但是,它仍然依赖于浏览器的打印功能。 要去除打印页面的头部时间信息,我们可以尝试使用CSS的`@page`规则来设置打印的页边距,并隐藏页眉和页脚。但是,请注意,不同浏览器对`@page`规则的支持程度不同,特别是对于隐藏页眉和页脚,并不是所有浏览器都支持。 一个较为通用的方法是设置页边距为0,并隐藏页眉和页脚,但实际效果可能因浏览器而异。 以下是一个示例,展示如何在Vue组件中通过CSS来尝试去除打印页面的头部和尾部信息: 步骤: 1. 在组件的样式部分(或全局样式)添加针对打印的CSS规则。 2. 使用`@media print`媒体查询来定义打印时的样式。 3. 使用`@page`规则设置页边距,并尝试隐藏页眉页脚。 示例代码: ```vue <template> <div> <!-- 要打印的区域 --> <div id="printMe"> <!-- 打印内容 --> <p>今天的天气真好啊</p> <!-- 其他内容 --> </div> <!-- 打印按钮 --> <el-button v-print="printConfig">打印</el-button> </div> </template> <script> export default { data() { return { printConfig: { id: 'printMe', popTitle: '', // 打印页面的标题,可选 extraHead: '', // 额外的头部标签,可以在这里添加样式 // 可以设置其他打印配置,但无法直接控制浏览器默认的页眉页脚 } }; } }; </script> <style scoped> /* 普通样式 */ </style> <style> /* 打印样式,注意这里不能加scoped,因为打印时需要应用到打印页面 */ @media print { @page { size: auto; /* auto是初始值,表示使用浏览器的默认设置 */ margin: 0mm; /* 设置页边距为0,可能会影响页眉页脚的显示 */ } body { margin: 0; /* 确保body没有外边距 */ } /* 注意:有些浏览器可能不支持直接隐藏页眉页脚,但设置margin为0后,页眉页脚可能不会显示在内容区域 */ /* 另外,可以通过设置页边距为足够大,使得页眉页脚被推出可见区域,但这也会导致内容区域变小 */ } </style> ``` 然而,上述方法并不能保证在所有浏览器中都有效。因为浏览器默认的页眉页脚是否显示以及如何显示,是由用户打印设置决定的。用户可以在打印预览时手动选择是否显示页眉页脚(如果浏览器提供该选项)。 另一种方法是使用浏览器的打印设置,但这不是通过代码可以控制的。因此,我们只能尽量通过CSS来调整。 另外,参考引用[2]中,打印的内容是放在一个div中(id="InvoiceVoucher"),我们可以针对这个div设置打印样式。 如果上述方法无效,我们可以尝试使用一个隐藏的iframe来实现打印,这样可能会避免一些默认的页眉页脚,但同样不能保证完全去除。 由于浏览器的安全限制和差异性,目前没有一种方法可以完全在所有浏览器中去除页眉页脚。因此,我们只能尽量通过CSS调整,并告知用户可以在打印设置中手动关闭页眉页脚。 相关问题: §§相关问题§§ 1. 如何在Vue中实现自定义打印功能? 2. 如何去除打印页面的页脚URL信息? 3. Vue打印插件v-print的使用方法有哪些? 4. 不同浏览器(Chrome, Firefox, Edge)对打印样式支持有何差异?</think>### Vue中去除浏览器打印页面头部时间信息的方法 在Vue应用中调用浏览器打印功能时,去除头部时间信息需要通过CSS媒体查询实现。浏览器默认添加的页眉/页脚信息(URL、日期、页码等)无法通过JavaScript直接控制,但可以通过CSS的`@page`规则和边距设置来隐藏这些元素。 #### 解决方案步骤: 1. **添加打印专用CSS** 在组件中创建`<style>`标签(不要加`scoped`属性),使用`@media print`媒体查询: ```vue <style> @media print { @page { margin: 0; /* 关键设置:移除默认边距 */ size: auto; /* 保持原始尺寸 */ } body { margin: 1.6cm; /* 内容区域边距(可选) */ } } </style> ``` 2. **配置打印区域** 使用`v-print`指令或原生`window.print()`,确保只打印指定区域: ```vue <template> <div> <!-- 打印区域 --> <div id="printArea"> <h2>发票详情</h2> <p>订单号:{{ orderId }}</p> <!-- 其他打印内容 --> </div> <!-- 打印按钮 --> <el-button @click="handlePrint">打印发票</el-button> </div> </template> <script> export default { methods: { handlePrint() { const printContent = document.getElementById('printArea').innerHTML; const originalContent = document.body.innerHTML; document.body.innerHTML = printContent; window.print(); // 触发打印 document.body.innerHTML = originalContent; // 恢复内容 } } } </script> ``` #### 注意事项: 1. **浏览器兼容性** - Chrome/Firefox:支持`@page { margin: 0 }`隐藏页眉 - Edge:可能需要额外设置`margin-top: -2cm` - 部分旧版浏览器可能无法完全去除 2. **备选方案** 如果CSS方案无效,可尝试: ```js window.print(); // 打印前提醒用户手动关闭页眉页脚 ``` 在打印预览界面,用户通常可以手动取消页眉/页脚选项(Chrome路径:`更多设置 > 页眉和页脚`) 3. **样式优化建议** ```css @media print { /* 隐藏非打印元素 */ .no-print { display: none } /* 强制分页 */ .page-break { page-break-after: always } } ``` #### 完整示例: ```vue <template> <div> <div id="invoiceTemplate"> <h2>电子发票</h2> <p>日期: {{ new Date().toLocaleDateString() }}</p> <el-divider /> <p>金额: ¥{{ amount.toFixed(2) }}</p> </div> <el-button type="primary" @click="printInvoice">打印</el-button> </div> </template> <script> export default { data() { return { amount: 128.50 } }, methods: { printInvoice() { const printWindow = window.open('', '_blank'); printWindow.document.write(` <html> <head> <title>发票打印</title> <style> @page { margin: 0; } body { margin: 1cm; font-family: SimSun } </style> </head> <body> ${document.getElementById('invoiceTemplate').innerHTML} </body> </html> `); printWindow.document.close(); printWindow.print(); printWindow.close(); } } } </script> ``` > **重要提示**:由于浏览器安全限制,最终效果取决于用户的打印设置。建议在打印预览界面提示用户手动检查页眉/页脚选项[^1][^2]。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值