首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tel浏览器windows phone +tel和mailto标签不起作用

tel浏览器windows phone +tel和mailto标签不起作用
EN

Stack Overflow用户
提问于 2013-02-20 18:18:16
回答 3查看 1.6K关注 0票数 1

我正在使用一个网页浏览器来呈现一个html字符串。

代码语言:javascript
复制
private void webBrowserHTML_Loaded(object sender, RoutedEventArgs e)
        {
            WebBrowser web = sender as WebBrowser;
            string description = web.DataContext.ToString();
            web.NavigateToString(description);
        }

在这个html中,我有tel和mailto标记:

代码语言:javascript
复制
<a href="mailto:xxxx@xx.xx"> Envoyer un email </a> 
<a href="tel:+33102030405"> Appeler la société xxx </a>

我的问题是,当我点击号码,我不打电话,当我点击邮件是不能打开我的outlook!!

有什么解决办法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-20 21:43:23

遗憾的是,Windows Phone上的WebBrowser控件不支持mailto:tel:

您可以做的是在HTML语言中注入Javascript,它将枚举所有的a标记并连接一个onclick事件。该事件将调用window.external.Notify,后者将以URL作为参数引发WebBrowserScriptNotify事件。

这有点复杂,但我认为这是在Windows Phone上处理这些mailto和tel协议的唯一选择。

代码如下:

代码语言:javascript
复制
    // Constructor
    public MainPage()
    {
        InitializeComponent();

        browser.IsScriptEnabled = true;
        browser.ScriptNotify += browser_ScriptNotify;
        browser.Loaded += browser_Loaded;
    }

    void browser_Loaded(object sender, RoutedEventArgs e)
    {
        // Sample HTML code
        string html = @"<html><head></head><body><a href='mailto:test@test.com'>Envoyer un email</a><a href='tel:+3301010101'>Appeler</a></body></html>";

        // Script that will call raise the ScriptNotify via window.external.Notify
        string notifyJS = @"<script type='text/javascript' language='javascript'>
                                window.onload = function() {
                                    var links = document.getElementsByTagName('a');
                                    for(var i=0;i<links.length;i++) {
                                        links[i].onclick = function() {
                                            window.external.Notify(this.href);
                                        }
                                    }
                                }
                            </script>";

        // Inject the Javascript into the head section of the HTML document
        html = html.Replace("<head>", string.Format("<head>{0}{1}", Environment.NewLine, notifyJS));

        browser.NavigateToString(html);
    }

    void browser_ScriptNotify(object sender, NotifyEventArgs e)
    {
        if (!string.IsNullOrEmpty(e.Value))
        {
            string href = e.Value.ToLower();
            if (href.StartsWith("mailto:"))
            {
                EmailComposeTask email =  new EmailComposeTask();
                email.To = href.Replace("mailto:", string.Empty);
                email.Show();
            }
            else if (href.StartsWith("tel:"))
            {
                PhoneCallTask call = new PhoneCallTask();
                call.PhoneNumber = href.Replace("tel:", string.Empty);
                call.Show();
            }
        }
    }
票数 1
EN

Stack Overflow用户

发布于 2015-02-25 22:09:34

代码语言:javascript
复制
<onclick="window.location.href = 'tel:1231231234';">

而不是

代码语言:javascript
复制
<a href="tel:+33102030405">

谢谢

票数 1
EN

Stack Overflow用户

发布于 2013-03-07 16:01:28

很好的修复,上面的解决方案工作得更好,

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14977347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档