Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Xamarin网络视图-Can';t禁用双击事件_Javascript_C#_Xamarin_Webview - Fatal编程技术网

Javascript Xamarin网络视图-Can';t禁用双击事件

Javascript Xamarin网络视图-Can';t禁用双击事件,javascript,c#,xamarin,webview,Javascript,C#,Xamarin,Webview,我正在尝试禁用任何双击功能,在本例中,是为了禁用双击instagram图像以使其喜欢的功能。我已经测试了一些JavaScript作为chrome扩展,它给出了我想要的结果,但是当我将它引入Xamarin网络视图时,它就不起作用了。奇怪的是注入的JavaScript正在运行,因为如果我在里面有一个警报,它就会显示出来。它仍然喜欢Instagram上的图像 这是Chrome扩展的JavaScript document.addEventListener("dblclick",handler,true)

我正在尝试禁用任何双击功能,在本例中,是为了禁用双击instagram图像以使其喜欢的功能。我已经测试了一些JavaScript作为chrome扩展,它给出了我想要的结果,但是当我将它引入Xamarin网络视图时,它就不起作用了。奇怪的是注入的JavaScript正在运行,因为如果我在里面有一个警报,它就会显示出来。它仍然喜欢Instagram上的图像

这是Chrome扩展的JavaScript

document.addEventListener("dblclick",handler,true);function handler(e) {
    e.stopPropagation();
    e.preventDefault(); }
这是Xamarin的代码

  string function = "document.addEventListener(\"dblclick\",handler,true);function handler(e){e.stopPropagation();e.preventDefault();}";
  Xamarin.Forms.Device.BeginInvokeOnMainThread(() => { webBrowser.Eval(function); }); 
更新:
经过一些测试,我可以确认这是一个问题,只有当运行该网站的移动版本。我不确定这是否与事件的触发方式或其他相关问题有关,但这仅与移动设备有关。

我创建了一个示例页面,其中仅包含一个webview来测试您的案例:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="TestApp.Page1" Appearing="Page1_OnAppearing">
    <WebView x:Name="TestWebView" />
</ContentPage>
运行此代码后,双击“我的测试”按钮后仍会出现双击警报。这是因为javascript评估运行到早期。或者换句话说:在执行javascript之前,您必须给webview多一点时间来加载内容:

private async void Page1_OnAppearing(object sender, EventArgs e)
{
    // Just wait a little bit before calling eval
    await Task.Delay(1000);

    var script = "document.addEventListener('dblclick',handler,true);function handler(e) { e.stopPropagation(); e.preventDefault(); }";
    TestWebView.Eval(script);
}
现在,警报不再出现

让我知道这是否适用于你的情况

编辑:另一种方法 问题可能是由于Instagram页面的实现造成的。另一种禁用双击的方法是禁用instagram帖子上的所有事件

您可以设置以下选项来禁用此功能:

style="pointer-events:none;"
因此,您必须确定div元素的xpath,并使用javascript设置样式,如下所示:

htmlElement.setAttribute("style", "pointer-events:none;");

我在我的浏览器(chrome调试器)上测试了这个功能,它成功了。但我无法通过应用程序确定这是否适用于您的情况。

谢谢您的帮助,但这似乎对我的情况没有影响。另外,作为旁注,我在加载页面时没有运行脚本,它是由Xaml中的一个按钮触发的,因此,在按下页面时,应该可以很好地加载页面。我还想知道这是否可能与手机Instagrams网页有关,也许这可能会在我的案例中造成一些问题。我怀疑这种情况是由Instagram网页的实施造成的。也许他们用不同的方法来检测双击。我用另一种方式修改了我的答案。你能检查一下这个吗?
style="pointer-events:none;"
htmlElement.setAttribute("style", "pointer-events:none;");