如何在metro应用程序中从Web上下文(Iframe)提供javascript警报。 [英] How to give javascript alert from web context(Iframe) in metro app.

查看:158
本文介绍了如何在metro应用程序中从Web上下文(Iframe)提供javascript警报。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的地铁应用程序..我使用iframe加载一个Web应用程序 - 基本上是一个包含一些控件的表单,最后用户点击完成按钮,我想显示警告



我知道在地铁应用程序。我们可以使用new Windows.UI.PopupMessage来显示警报。但我如何从网络上下文(Iframe)做同样的事情。



我在default.js中有一个函数(showalert();),我使用new Windows.UI.PopupMessage来显示消息。如果我试图从iframe页面访问此功能,如window.parent.showalert();。我得到例外说访问被拒绝。



请有人回复这个,因为这对我来说非常关键。



谢谢&问候
Goutham

解决方案

你可以使用HTML 5的显示(或者您可以在本地环境中执行您想要执行的任何操作)。



请注意消息的参数事件回调( msg here)还包括一个origin属性,您可以检查以确保您只处理来自预期发件人的邮件。



IFRAME中托管的网页< <$ c中的href =http://msdn.microsoft.com/en-us/library/ie/cc197015(v=vs.85).aspx\"rel =nofollow noreferrer> postMessage $ c> onclick 按钮的事件处理程序(您可能希望将调用拉为单独的.js文件而不是内联)

 <!DOCTYPE html> 
< html>
< head>
< title>< / title>
< / head>
< body>
这是webpage.html加载到iFrame
< button id =buttononclick =window.parent.postMessage('Hello from Web Context','*');> Say你好< /按钮>
< / body>
< / html>


In my metro app ..I am using iframe to load a web application - basically a form which contains some controls and finally user click on finish button and i want to show alert

i know in metro app. we can give the alert using "new Windows.UI.PopupMessage" to show the alert. but how can i do the same from the web context(Iframe).

i have a function (showalert();) in my default.js where i am using the "new Windows.UI.PopupMessage" to show messages. if i am trying to access this function from iframe page like "window.parent.showalert();". i get exception saying access denied.

Please someone reply to this as this is very critical for me.

thanks & regards Goutham

解决方案

You can use HTML 5's postMessage to communicate between contexts.

Below is an image of a simplistic example with the relevant code snippets following it; the Bing Maps trip optimizer example uses this same technique on a grander scale.

The main page (default.js), which is running in the local context, includes an IFRAME loaded in web context via the following markup (I left out the unchanged <head> element to save space):

<body onload="localContext.onLoad();">
   <p style="margin-top: 150px">This is default.html in the local context</p>

   <div style="background-color: azure; width: 300px">
       <iframe src="ms-appx-web:///webpage.html" />
   </div>
</body>

localContext is defined in default.js as

var localContext = {

    onLoad: function () {
        window.attachEvent("onmessage",
            function (msg) {
                if (msg.origin == "ms-appx-web://bfddc371-2040-4560-a61a-ec479ed996b0")
                    new Windows.UI.Popups.MessageDialog(msg.origin).showAsync().then();
            });
    }

};

and it defines an onLoad function for default.html that registers a listener to the onmessage event, and when that event fires a MessageDialog is shown (or you can take whatever action you want to do in the local context).

Note that the parameter to the message event callback (msg here) also includes a origin property that you can check to make sure you're only handling messages from expected senders.

The web page hosted in the IFRAME calls postMessage in the onclick event handler of a button (you'll probably want to pull the invocation a separate .js file versus in-line)

<!DOCTYPE html>
<html>
    <head>
        <title></title>
    </head>
    <body>
        This is webpage.html loaded into an iFrame
        <button id="button" onclick="window.parent.postMessage('Hello from Web Context', '*');">Say Hello</button>
    </body>
</html>

这篇关于如何在metro应用程序中从Web上下文(Iframe)提供javascript警报。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆