none
win 8应用WebView调用html问题 RRS feed

  • 问题

  • 在项目中添加一个html,其中调用了一个js文件,引入<script type="text/javascript" src="a.js" >a.js中有个简单的函数

    function test1(){
    document.write("abc");
    }

    html中调用如下

    <div id="chartContainer"></div>
        <script type="text/javascript">
            test1();
        </script>

    在页面中有个按钮,点击时让WebView加载html,出现 test1()未定义

    加载代码如下

    StorageFile sf = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///index1.html"));
                    uint length = 10000;
                    //IInputStream input = await sf.OpenReadAsync();
                    IRandomAccessStream randomStream = await sf.OpenAsync(FileAccessMode.Read);
                    DataReader dataReader = new DataReader(randomStream);
                    ulong size = randomStream.Size;
                    uint numBytesLoaded = await dataReader.LoadAsync((uint)size);
                    string fileContent = dataReader.ReadString(numBytesLoaded);
                    this.web.NavigateToString(fileContent);

    如果直接把js文件中的函数考到html中是可以运行的。

    推测可能是引用js的路径有问题,不知道怎样修改,上面的路径在.net中是正确的。请大神指教


    • 已编辑 runqian 2014年4月10日 9:24
    2014年4月10日 9:23

答案

  • 你好 runqian,

    我认为你的做法是不可以的,因为a.js文件虽然存在于文件夹中,但没有一个明确的路径,否则也不会在index1.html前加上ms-appx了吧,而在js中加入ms-appx,js应该不认识,所以才会不停地报错。

    我建议你可以使用插入Script的办法来实现,首先读取a.js文件中的语句,然后把他们插入到当前index1.html中。很早之前我做了一个类似的Demo,你可以看一下,主要目的就是把某些Script插入到当前WebView页面中:http://social.msdn.microsoft.com/forums/wpapps/zh-cn/1014f8e4-f6bc-4059-b367-c2420ca18cf2/win8-webview

    --James


    <THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
    Thanks
    MSDN Community Support

    Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.

    2014年4月11日 3:31
    版主

全部回复

  • 没有人帮顶啊,请大神帮忙看看,说说有什么思路
    2014年4月11日 0:21
  • 你好 runqian,

    我认为你的做法是不可以的,因为a.js文件虽然存在于文件夹中,但没有一个明确的路径,否则也不会在index1.html前加上ms-appx了吧,而在js中加入ms-appx,js应该不认识,所以才会不停地报错。

    我建议你可以使用插入Script的办法来实现,首先读取a.js文件中的语句,然后把他们插入到当前index1.html中。很早之前我做了一个类似的Demo,你可以看一下,主要目的就是把某些Script插入到当前WebView页面中:http://social.msdn.microsoft.com/forums/wpapps/zh-cn/1014f8e4-f6bc-4059-b367-c2420ca18cf2/win8-webview

    --James


    <THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
    Thanks
    MSDN Community Support

    Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.

    2014年4月11日 3:31
    版主