一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

WPF與Javascript交互

 風(fēng)中Robin 2012-06-22

今天在WPF中使用WebBrowser的InvokeScript方法與Javascript交互時遇到若干問題,記錄如下:

  使用[ComVisible(true)] 標(biāo)記公開給腳本訪問的對象

  調(diào)用InvokeScript方法一定要在WebBrowser LoadCompleted后調(diào)用

  使用 function 申明后臺需要調(diào)用的方法

  返回COMException表明調(diào)用腳本函數(shù)未找到

  HTML:demo.htm

<!DOCTYPE>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <input type="button" onclick="window.external.say('this is from htm');return false;" value="調(diào)用后方法" />
    <div id="msg"></div>
    <script type="text/javascript">
        (function (window) {
            var searcher = {
                showmsg: function (msg) {
                    alert(msg);
                } 
            };
            window.searcher = searcher;
        })(window);

        function showmsg(msg) {
            searcher.showmsg(msg);
        }
    </script>
</body>
</html>

  WPF:MainWindow.xam

l<Grid >
        <Grid.RowDefinitions>
            <RowDefinition Height="50"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Border BorderBrush="BlueViolet" BorderThickness="0,0,0,1">
            <StackPanel Orientation="Horizontal">
                <Button x:Name="btn1" Width="100" Height="40" Click="btn1_Click" Content="加載頁面" VerticalAlignment="Center" Margin="10,0"></Button>
                <Button x:Name="btn2" Width="100" Height="40" Click="btn2_Click" Content="調(diào)用腳本" VerticalAlignment="Center"></Button>
            </StackPanel>
        </Border>
        <WebBrowser x:Name="webBrowser" Grid.Row="1"></WebBrowser>
</Grid> 

  后臺代碼如下:

 /// <summary>
    
/// Web.xaml 的交互邏輯
    
/// </summary>
    public partial class Web : Window
    {
        public Action webHandler;

        public Web()
        {
            InitializeComponent();
            this.webBrowser.ObjectForScripting = new ScriptObject(this);
            this.webBrowser.LoadCompleted += new System.Windows.Navigation.LoadCompletedEventHandler(webBrowser_LoadCompleted);
        }

        void webBrowser_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
        {
            if (this.webHandler != null)
            {
                this.webHandler();
                this.webHandler = null;
            }
        }

        private void btn1_Click(object sender, RoutedEventArgs e)
        {
            this.webHandler = () =>
            {
                this.webBrowser.InvokeScript("showmsg"new object[] { "{'center':{'lng':12.232,'lat':13.232},'zoom':14}" });
            };
            string htmlfile = System.IO.Path.Combine("file:///", System.Environment.CurrentDirectory, "Resources/demo.htm");
            this.webBrowser.Navigate(new Uri(htmlfile, UriKind.RelativeOrAbsolute));
        }

        private void btn2_Click(object sender, RoutedEventArgs e)
        {
            this.webBrowser.InvokeScript("showmsg"new object[] { "{'center':{'lng':12.232,'lat':13.232},'zoom':14}" });
        }
    }

    [ComVisible(true)]
    public class ScriptObject
    {
        private Window instance;
        public ScriptObject(Window instance)
        {
            this.instance = instance;
        }

        public void say(string msg)
        {
            MessageBox.Show(msg, "來自服務(wù)端的消息", MessageBoxButton.OK, MessageBoxImage.Information);
        }
    }

  從cs調(diào)用js失敗的情況(一直沒有找到問題的原因):

  cs:

  InvokeScript("searcher.showmsg", new object[] { "hello" })

  js:

    <script type="text/javascript">
        (function (window) {
            var searcher = {
                showmsg: function (msg) {
                    alert(msg);
                } 
            };
            window.searcher = searcher;
        })(window);
    </script>

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产午夜福利在线观看精品| 国产一区二区精品丝袜| 欧美日韩久久精品一区二区 | 亚洲欧美日本国产不卡| 日本特黄特色大片免费观看| 国产av熟女一区二区三区四区 | 在线中文字幕亚洲欧美一区 | 日本不卡在线视频你懂的| 熟女乱一区二区三区丝袜| 日本熟女中文字幕一区| 小草少妇视频免费看视频| 91人妻人人做人碰人人九色| 国产中文字幕一区二区| 色婷婷人妻av毛片一区二区三区| 91精品国产品国语在线不卡| 亚洲欧美精品伊人久久| 国产精品欧美激情在线观看| 五月婷婷综合激情啪啪| 国产精品国三级国产专不卡| 精品亚洲av一区二区三区| 黄色污污在线免费观看| 插进她的身体里在线观看骚| 国产精品免费不卡视频| 亚洲国产av在线观看一区| 久草精品视频精品视频精品| 日本人妻熟女一区二区三区| 白丝美女被插入视频在线观看| 东京干男人都知道的天堂| 亚洲精品伦理熟女国产一区二区 | 国产欧美日韩精品一区二区| 男人和女人干逼的视频| 日本欧美三级中文字幕| 中国少妇精品偷拍视频| 九九热精品视频在线观看| 偷自拍亚洲欧美一区二页| 欧美日韩国产黑人一区| 亚洲精品小视频在线观看| 91免费一区二区三区| 成人区人妻精品一区二区三区| 国产欧美日韩在线精品一二区| 国产免费人成视频尤物|