繁体   English   中英

Xamarin Forms。 Webview。 不注入 javascript

[英]Xamarin Forms. Webview. Not injecting javascript

我正在尝试将 js 注入 webview。 我的目标是在加载的网站上注入自定义 js。 我使用以下代码将 javascript 注入到 xamarin forms 中的简单 webview 中。

XAML:

<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:BrowserApp" x:Class="BrowserApp.Views.BrowserAppPage">

<StackLayout>
    <StackLayout Orientation="Horizontal">
    <Button Text="&lt;" HeightRequest="40" WidthRequest="40" Clicked="Back_Clicked"/>
    <Button Text="&gt;" HeightRequest="40" WidthRequest="40" Clicked="Forward_Clicked"/> 
        <Entry x:Name="url" WidthRequest="180" />
        <Button Text="Go" HeightRequest="40" WidthRequest="50" Clicked="Go_Clicked"/>
    </StackLayout>
    <Label x:Name="LoadingLabel" IsVisible="false"/>
        <WebView x:Name="Browser" HeightRequest="1000" WidthRequest="1000" Navigating="Handle_Navigating" Navigated="Handle_Navigated"/>
    </StackLayout>
</ContentPage>

XAML.CS:

using System.Threading.Tasks;
using Xamarin.Forms;

namespace BrowserApp.Views
{
    public partial class BrowserAppPage : ContentPage
    {
        public async void  Handle_Navigated(WebView sender, Xamarin.Forms.WebNavigatedEventArgs e)
        {
            await sender.EvaluateJavaScriptAsync("javascript:alert();");
            LoadingLabel.IsVisible = false;
        }

        void Handle_Navigating(object sender, Xamarin.Forms.WebNavigatingEventArgs e)
        {
            LoadingLabel.IsVisible = true;
        }

        void Go_Clicked(object sender, System.EventArgs e)
        {
            Browser.Source = url.Text;
        }

        void Forward_Clicked(object sender, System.EventArgs e)
        {
            if (Browser.CanGoForward)
                Browser.GoForward();
        }

        void Back_Clicked(object sender, System.EventArgs e)
        {
            if (Browser.CanGoBack)
                Browser.GoBack();
        }

        public BrowserAppPage()
        {
            InitializeComponent();
            url.Text = "https://google.com";
            Browser.Source = url.Text;

        }
    }
}

不知何故,js没有被注入。 甚至一个简单的警报都不起作用。

编辑:我检查了 android 设备上的代码,而不是 UWP。 在 android 上它正在工作。 有没有办法为平台启用 javascript?

我在 iOS 和 Android 上进行了测试,它工作得很好,但是在 UWP 上出现了问题。


我点击了链接:,将IsJavaScriptAlertEnabled设置为 true 但没有运气。

试过了

javascript:window.alert(123);
javascript:alert(123);
alert(123);"
window.alert(123);"

问题依旧!!!

我们可以在 UWP 上调用 javascript(js 在此示例中工作),所以我认为网站可能会阻止 UWP 上的警报 function。


我已经在github上提出了这个问题,你可以继续关注这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM