Eri*_*ric 6 css webview ios airprint
我正在开发一个使用Safari Webview的混合HTML5/iOS应用程序.我们使用AirPrint允许用户打印webview的内容.我遇到的问题是打开打印对话框后,打印样式会在屏幕上生效,即使打印完成或取消后也不会消失.这不会发生在我们的Windows或Android版本的应用程序中,它们分别使用CEF和Android System Webview.这些版本的应用程序中的打印样式仅应用于打印输出,如预期的那样.
任何人都有使用AirPrint和Safari Webview的经验,可以解释一下解决方案吗?我已经考虑过在打印之前和之后添加/删除包含CSS的链接标签,但是感觉很麻烦,并且没有回答为什么打印样式应用于屏幕的奇怪问题.
任何帮助赞赏!对不起,没有真正的方法来附加代码!
是的,这确实是一个意想不到的行为。不过,我们可以尝试使用 JavaScript 来解决这个问题。
理论:打印完成后,让我们重新加载样式表。浏览器将再次绘制页面,并希望使用屏幕定义。
实践:由于我们在打印后没有 JavaScript 回调,因此您可以尝试使用 window.onfocus 事件重新加载样式表,如下所示:
function updateStylesheets(){
var links = document.getElementsByTagName("link");
for (var x in links) {
var link = links[x];
if (link.getAttribute("type").indexOf("css") > -1) {
link.href = link.href + "?id=" + new Date().getMilliseconds();
}
}
}
window.onfocus = updateStylesheets;
Run Code Online (Sandbox Code Playgroud)
具体来说,它会抓取所有<link>标签并在后面附加一个随机数,强制重新加载样式表。
如果有效,请告诉我,我很乐意提供帮助。
| 归档时间: |
|
| 查看次数: |
547 次 |
| 最近记录: |