大可iii 2021-09-20 10:14 采纳率: 0%
浏览 48

请问使用3DwebView中 .loadHTML的时候它可以自己加载HTML中的script吗,如果不行的话怎么加载呢,你在博客里面的ExecuteJavaScript讲的不是很详细

我是这样写的代码:

1.首先调用异步方法监听HTML是否完成,然后再运行HTML文件


_focusedPrefab = mainWebViewPrefab;
            mainWebViewPrefab.Initialized += (s, e) => {
                var webViewWithPopups = mainWebViewPrefab.WebView as IWithPopups;
                //运行脚本的异步方法
                runJavaScriptFun();
                mainWebViewPrefab.WebView.LoadHtml(CONTROLS_HTML);

2.这是监听HTML和执行Script异步方法中的内容

async void runJavaScriptFun()
        {
            await mainWebViewPrefab.WaitUntilInitialized();
            mainWebViewPrefab.WebView.LoadProgressChanged += async (sender, eventArgs) => {
                if (eventArgs.Type == ProgressChangeType.Finished)
                {
                    var headerText = await mainWebViewPrefab.WebView.ExecuteJavaScript(runJavaScript);
                }
            };
        }

3.写了个String变量用来保存HTML文件内容,其中双引号改成单引号,在外部文件中可以直接使用的

  const string CONTROLS_HTML = @"
            <!DOCTYPE html>
            <html xmlns='http://www.w3.org/1999/xhtml' >
              <head>
                <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
                <title>百度地图API自定义地图</title>
                <!--引用百度地图API-->
                <style type = 'text/css' >
                body, html,#map {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:'微软雅黑';
    }
                </style>
                <script type = 'text/javascript' src='http://api.map.baidu.com/api?v=2.0&ak=8EuL8Of3fyXWnPV5X2Rj8UMQ6RjE1NcZ' ></script>
              </head>
  
            <body>
                <div id = 'map' ></ div >
            </body>
            </html>

        ";

4.Html中 脚本的内容

        const string runJavaScript = @"            <script type='text/javascript' >
                // 百度地图API功能
                var map = new BMap.Map('map');    // 创建Map实例
                    map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);  // 初始化地图,设置中心点坐标和地图级别
                //添加地图类型控件
                map.addControl(new BMap.MapTypeControl({
                    mapTypes:[
                        BMAP_NORMAL_MAP,
                        BMAP_HYBRID_MAP
                    ]
                }));      
                map.setCurrentCity('北京');          // 设置地图显示的城市 此项是必须设置的
                map.enableScrollWheelZoom(true);     //开启鼠标滚轮缩放
            </script>";
    }

  • 写回答

1条回答 默认 最新

  • 呆呆敲代码的小Y Unity3D领域优质创作者 2021-09-20 10:57
    关注

    据我所知,loadHTML的时候可以加载HTML中的script,但是不会自动执行
    在加载的每个新页面时,有一个自动执行的 JavaScript 脚本列表:

    List<string> PageLoadScripts { get; }
    

    这个列表默认为空,需要我们手动添加
    可以使用webViewPrefab.WebView.PageLoadScripts 进行添加。有一个例子,你可以试试看

    例子
    // Add a script that automatically hides all scrollbars.
    await webViewPrefab.WaitUntilInitialized();
    webViewPrefab.WebView.PageLoadScripts.Add(@"
        var styleElement = document.createElement('style');
        styleElement.innerText = 'body::-webkit-scrollbar { display: none; }';
        document.head.appendChild(styleElement);
    ");
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 9月20日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表