Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在webview中重写window.print()_Java_Html_Webview - Fatal编程技术网

Java 在webview中重写window.print()

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

因为webview不支持javascript函数
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代码-啊。。这就是我所需要的,谢谢!对不起,我帮不了你。