Попробуйте это,
<template>
<Page class="page">
<ActionBar title="Home" class="action-bar" />
<GridLayout>
<WebView src="https://www.nativescript.org/" @loadFinished="onLoadFinished"
:visibility="visibility"></WebView>
<ScrollView v-if="html">
<Label class="h3" :text="html" textWrap="true"></Label>
</ScrollView>
</GridLayout>
</Page>
</template>
<script>
import {
device
} from "platform";
export default {
data() {
return {
html: ""
};
},
computed: {
visibility: function() {
return this.html ? "hidden" : "visible";
}
},
methods: {
onLoadFinished: function(args) {
const that = this,
webView = args.object,
jsStr = "document.body.innerHTML";
if (webView.ios) {
webView.ios.evaluateJavaScriptCompletionHandler(jsStr,
function(
result,
error
) {
if (error) {
console.log("error...");
} else if (result) {
that.html = result;
}
});
} else if (webView.android) {
// Works only on Android 19 and above
webView.android.evaluateJavascript(
jsStr,
new android.webkit.ValueCallback({
onReceiveValue: function(html) {
that.html = html;
}
})
);
}
}
}
};
</script>
Если вам нравится поддержка более старых версий Android (API уровня 17 и 18), реализация становится немного сложной. Вам нужно будет реализовать интерфейс @JavascriptInterface
, который может быть написан только на Java. Уже сообщается о проблеме, связанной с включением возможности Java-аннотации из JavaScript . Возможно, вам придется написать проект библиотеки Android, в котором вы реализуете @JavascriptInterface
и используете его для отслеживания контента, как объяснено здесь .
Образец игровой площадки