【问题标题】:Xamarin Forms. Webview. Not injecting javascriptXamarin 形式。网页浏览。不注入javascript
【发布时间】:2020-06-12 08:42:02
【问题描述】:

我正在尝试将 js 注入 webview。我的目标是在加载的网站上注入自定义 js。 我使用以下代码以 xamarin 表单将 javascript 注入到我的简单 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?

【问题讨论】:

  • 你想让 js 在所有平台(iOS、android、uwp)上工作吗?你测试了吗?
  • 我一直致力于将 UWP 作为首选工作平台。设置好安卓设备后,我注意到它必须是一个平台设置,可以在 UWP 上暂停 js。 (尚未测试 iOS)所以,是的,我正在寻找在所有平台(iOS、android 和 uwp)上启用 js。

标签: c# xamarin xamarin.forms


【解决方案1】:

我在 iOS 和 Android 上测试,完美运行,但在 UWP 上出现问题。


我遵循link :,将IsJavaScriptAlertEnabled 设置为true,但没有运气。

试过了

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

问题依旧!!!

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


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-09
    • 1970-01-01
    • 2013-11-15
    • 2012-01-20
    • 1970-01-01
    • 2011-03-03
    • 2012-12-28
    • 2015-12-31
    相关资源
    最近更新 更多