gpt4 book ai didi

UiWebView 对 window.print 的响应

转载 作者:行者123 更新时间:2023-12-03 08:06:17 24 4
gpt4 key购买 nike

有没有办法从 UIWebView 检测 window.print 并做出响应?我在我的 UiWebView 中进行了打印,需要有一种方法来从 UIWebView 对该事件使用react。

最佳答案

首先,这是solution我碰到。但是 UIWebview 不支持这些事件和 API,就像在桌面浏览器中一样。还没有得到matchMedia去工作。当我配置了打印机时可能会起作用!?!。

实际原因是网页的媒体类型没有从screen改变。至print在 UIWebView 中,不像桌面浏览器,所以没有触发器,直到这一点。

并且 UIWebView 到目前为止还没有用于打印的委托(delegate)方法。

无论如何,只要有意愿,就会有 [hack] 方式。两步解决方案。

步骤 1. Javascript

如果您可以访问 HTML 或 JS 文件,并且它仅用于此 UIWebView,则可以在 JS 中添加以下行

(function(){
var originalPrintFn = window.print; // Keep it cached in this variable, just in case
window.print = function(){
// Trigger location change
window.location = "your_app_scheme:print";
}
})();

如果您无权访问 HTML 或 JS 文件,请在 UIWebView 委托(delegate)中添加以下代码
[self.myWebView stringByEvaluatingJavaScriptFromString:@"(function(){var originalPrintFn = window.print;window.print = function(){window.location = 'your_app_scheme:print';}})();"];

这可以在代表的 webViewDidFinishLoad 中完成。方法

步骤 2. 以原生方式接听电话
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
if ([[[request URL] absoluteString] hasPrefix:@"your_app_scheme:"]) {

// Call the given selector
[self performSelector:@selector(your_handle_to_print)];
// Cancel the event, so the webview doesn't load the url
return NO;
}
return YES;
}

在此之后 your_handle_to_print ,你可以施展你的打印魔法。

希望这可以帮助!

关于UiWebView 对 window.print 的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22364543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com