【发布时间】: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="<" HeightRequest="40" WidthRequest="40" Clicked="Back_Clicked"/>
<Button Text=">" 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