首页 > 解决方案 > Xamarin 形式。网页浏览。不注入javascript

问题描述

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

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?

标签: c#xamarinxamarin.forms

解决方案


我在 iOS 和 Android 上测试,它运行良好,但在 UWP 上出现问题。


我按照链接:,设置IsJavaScriptAlertEnabled为 true 但没有运气。

试过了

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

问题依旧!!!

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


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


推荐阅读