如何在Flash中访问Cookie?
我正在寻找一个Flash电影中同一个域的Cookie值.这可能吗?
让我们看看我让一个用户设置一个变量foo,并且我使用任何Web编程语言存储它.我可以通过该语言轻松访问它,但是我想通过Flash电影访问它,而不通过在HTML页面中打印来传递它. 解决方法
如果您只想存储和检索数据,则可能需要使用SharedObject类.请参阅
Adobe’s SharedObject reference了解更多细节.
如果要访问HTTP cookie,则需要使用ExternalInterface来与JavaScript进行通信.我们这样做的方式是有一个名为HTTPCookies的帮助类. HTTPCookies.as: import flash.external.ExternalInterface; public class HTTPCookies { public static function getCookie(key:String):* { return ExternalInterface.call("getCookie",key); } public static function setCookie(key:String,val:*):void { ExternalInterface.call("setCookie",key,val); } } 您需要确保使用Flash对象中的“allowScriptAccess”参数启用JavaScript. 那么你需要创建一对javascript函数getCookie和setCookie,如下(感谢quirksmode.org) HTTPCookies.js: function getCookie(key) { var cookieValue = null; if (key) { var cookieSearch = key + "="; if (document.cookie) { var cookieArray = document.cookie.split(";"); for (var i = 0; i < cookieArray.length; i++) { var cookieString = cookieArray[i]; // skip past leading spaces while (cookieString.charAt(0) == ' ') { cookieString = cookieString.substr(1); } // extract the actual value if (cookieString.indexOf(cookieSearch) == 0) { cookieValue = cookieString.substr(cookieSearch.length); } } } } return cookieValue; } function setCookie(key,val) { if (key) { var date = new Date(); if (val != null) { // expires in one year date.setTime(date.getTime() + (365*24*60*60*1000)); document.cookie = key + "=" + val + "; expires=" + date.toGMTString(); } else { // expires yesterday date.setTime(date.getTime() - (24*60*60*1000)); document.cookie = key + "=; expires=" + date.toGMTString(); } } } 一旦您的Flash项目中有HTTPCookies.as,并从您的网页加载了HTTPCookies.js,您应该可以从Flash影片中调用getCookie和setCookie来获取或设置HTTP Cookie. 这只适用于非常简单的值 – 字符串或数字 – 但是对于任何更复杂的事情,您应该使用SharedObject. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |