Java 在webview中重写window.print()
因为webview不支持javascript函数Java 在webview中重写window.print(),java,html,webview,Java,Html,Webview,因为webview不支持javascript函数window.print(),所以我正试图像前面提到的那样覆盖它。 简而言之,这里提到的解决方案是: “插入JavaScript以覆盖window.print()并调用JavaScriptInterface方法” 因此,我做了以下工作: 1) 在创建和初始化webview的位置添加了以下方法调用: tab.getWebView().loadUrl("javascript:window.print = function() {console.log
window.print()
,所以我正试图像前面提到的那样覆盖它。
简而言之,这里提到的解决方案是:
“插入JavaScript以覆盖window.print()并调用JavaScriptInterface方法”
因此,我做了以下工作:
1) 在创建和初始化webview的位置添加了以下方法调用:
tab.getWebView().loadUrl("javascript:window.print = function() {console.log('Gonna do some special "
+ "stuff!!');"
+ "alert(\"Printing\"); customPrint.print();}");
2) 创建了一个web应用程序界面
public class WebAppInterface
{
@JavascriptInterface
public void print()
{
Toast.makeText(activityInstance, "print called", Toast.LENGTH_SHORT).show();
}
}
3) 将上面创建的接口添加到初始化webview的代码中:
mWebView.addJavascriptInterface(new WebAppInterface(), "customPrint");
当我的网页在同一个窗口中没有window.print()时,这很好。例如,某些html的onClick()如下所示:
function myFunction() { window.print(); }
但当myFunction()被替换为以下内容时无法工作:
var sUrl="www.google.com";
var ctrlString="Hello world";
var wind = window.open(sUrl,"PrintWindow",ctrlString);
wind.document.write("<html><head><meta name=\"viewport\"
content=\"width=device-width\" /><style>html, body, p {font-size: 20px;
width: 100%; display: block; margin: 2px; padding: 1px; }</style> .
</head><body><p>Hello world.</p></body></html>");
var tempTitle = document.title;
wind.document.title = sUrl;
wind.print();
wind.document.title = tempTitle;
wind.close();
var sUrl=“www.google.com”;
var ctrlString=“你好世界”;
var风=窗口打开(sUrl,“打印窗口”,ctrlString);
wind.document.write(“html,body,p{字体大小:20px;
宽度:100%;显示:块;边距:2px;填充:1px;}。
你好,世界。”;
var testitle=document.title;
wind.document.title=sUrl;
wind.print();
wind.document.title=entitle;
风。关闭();
这是因为我们在网页上单击“打印”时打开了一个新窗口。在我的例子中,我们在新窗口打开时打开了一个新的webview,该窗口将再次初始化。虽然我认为在创建新的webview时添加web界面应该是可行的,但在我的情况下它不起作用。需要找出这种情况下可能出现的错误吗?Java不是Javascript。是的..对!!在这里,我试图使用android已经提供的方式从javascript调用java代码。。。我觉得他有点越界了。但是您的问题帮助我尝试重写default window.print JAVASCRIPT函数来运行本机JAVA代码-啊。。这就是我所需要的,谢谢!对不起,我帮不了你。