关于action script与js相互调用的Security Error问题

大家都知道,as和js相互调用可以通过ExternalInterface.callExternalInterface.addCallback来进行。

比较好的做法是使用之前通过ExternalInterface.available来检测一下是否可用。

然而被坑了的是,这个ExternalInterface.available并不检测安全限制,也就是即使ExternalInterface.available=true,还是可能报错。

为了防止报错阻断程序正常运行,还需要再包一层try catch,如下所示:

            if (ExternalInterface.available)
            {
                try
                {
                    ExternalInterface.addCallback(name,func);
                }
                catch(e:Error)
                {
                    Log.error("[JavascriptAPI] Security Error ",e.getStackTrace());
                }
            }

感觉好坑啊-,-

另外关于js访问权限是通过allowscriptaccess属性来设置,一般同一安全域下使用“sameDomain”即可,跨域则改为“always”。

时间: 2024-11-05 11:39:32

关于action script与js相互调用的Security Error问题的相关文章

php与js相互调用

2019-2-3 php与js相互调用<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"><script type="text/javascript"> function test() { var t1=3; t1 = t1+2; alert(t1); return t1; } </script> <?php $name='J

WebBrowser(IE) 与 JS 相互调用

在开发中我们经常将WebBrowser控件嵌入Winform 程序来浏览网页,既然是网页那么少不了JS.下面就让我们来说说他们两之间的相互调用. 在C#封装的浏览器内核中,Chromium 内核封装有Xilium.Cefglue.Cefsharp,Webkit 内核封装 Webkit.Net .OpenWebKitSharp等. 但是说到和JS的调用,不得不说还是IE 的WebBrowser 最为简单方便.至于IE 为啥方便而其他的不方便,以后我会写文章分析. 下面我们还是先看看WebBrows

flex与js相互调用

1.flex调用js方法 调用方法例如:ExternalInterface.call("UploadComplete",oldName,uidName,_dir+"/"+uidName+type); 第一个是js方法名,后面几个是给这个js方法传的参数.这个方法必须在网页的js中注册,否则会调用失败. 需要注意的是调用之前需要检查网页的js是否已完成加载,用ExternalInterface.available可是判断. 注:这种调用方法是可以有返回值的,例如:va

WebView使用详解(一)——Native与JS相互调用(附JadX反编译)

前言:念念不忘,必有回响,永远坚持你所坚持的! 一直在用WebView,还没有系统的总结过它的用法,下面就系统的总结下,分享给大家 一.基本用法 1.加载在线URL void loadUrl(String url) 这个函数主要加载url所对应的网页地址,或者用于调用网页中的指定的JS方法(调用js方法的用法,后面会讲),但有一点必须注意的是:loadUrl()必须在主线程中执行!!!否则就会报错!!!.注意:加载在线网页地址是会用到联网permission权限的,所以需要在AndroidMan

as3.0和js相互调用,js控制flash的颜色

程序应用场景:flash是一副地图,地图上一单击,就调用js,弹出一个对话框,显示一些自己想要的信息:js定时调用as提供的方法,然后去改变flash的颜色. 以下是as代码: import flash.events.MouseEvent; import flash.text.TextField; //给每一栋楼增加监听事件 mc0001.addEventListener(MouseEvent.CLICK,onClick); mc0004.addEventListener(MouseEvent.

android WebView java与js相互调用

android webView js 使用1.js调用java    1.1 js代码    <script type="text/javascript">        function call(){            window.androidInterface.call('02585818031');        }    </script> 1.2.java代码    package com.example.webview;    import

Android js相互调用

一.webview相当于android中的浏览器,基于webkit开发,可以浏览网页文件,支持css javas cript 以及html 1 webview.getSettings().setJavaScriptEnabled(true);//允许JS执行 2 settings.setJavaScriptCanOpenWindowsAutomatically(true);//允许JS执行 3 webview.addJavascriptInterface(object,"name");

Objective-c与js相互调用

原文地址:http://blog.csdn.net/ikmb/article/details/6716831 一 objective-c调用js NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"]; //注: webView是UIWebView实例 二 js调用objective-c 1.obj-c部分 - (void)viewDidLoad 

ASP.NET的后台代码和前台JS代码相互调用

在实际的Web开发中,我们可能会常常遇到后台调用前台JS代码或者前台JS调用后台代码的情况.今天就把比较实用的前后台相互调用的方法总结出来和大家分享. <1>后台代码调用前台JS代码 一.说到后台代码调用前台的JS代码很多人首先就会想到使用 ClientScript.RegisterStartupScript()方法,该方法主要是注册启动脚本文本,即在后台执行调用前台JS代码 该方法有两个重载, 1.ClientScript.RegisterStartupScript(Type type,st