Переопределение window.print () в веб-просмотре - PullRequest
0 голосов
/ 25 мая 2018

Поскольку webview не поддерживает функцию javascript window.print(), я пытаюсь переопределить ее, как указано здесь .Короче говоря, упомянутое решение: «Внедрить JavaScript для переопределения window.print () и вызвать метод JavaScriptInterface»

Поэтому я сделал следующее:1) Добавлен следующий вызов метода для места, где я создаю и инициализирую веб-просмотр:

tab.getWebView().loadUrl("javascript:window.print = function() {console.log('Gonna do some special "
                    + "stuff!!');"
                    + "alert(\"Printing\"); customPrint.print();}");

2) Создан интерфейс веб-приложения

public class WebAppInterface
        {
            @JavascriptInterface
            public void print()
            {
                Toast.makeText(activityInstance, "print called", Toast.LENGTH_SHORT).show(); 
            }
        }

3) Добавлен созданный выше интерфейс к коду, где инициализируется веб-просмотр:

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();

Это происходит потому, что мы открываемНовое окно при нажатии на печать на веб-странице. В моем случае мы открываем новое веб-представление при открытии нового окна, которое снова инициализируется.Хотя я думаю, что добавление веб-интерфейса при создании нового веб-просмотра должно работать, но в моем случае это не работает.Нужно выяснить, что может быть не так в этом случае?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...