假如你裝置的是debug讀物的播放器,能夠看到Flash運(yùn)轉(zhuǎn)時(shí)發(fā)作了異樣。
點(diǎn)擊拜訪測(cè)試頁(yè)面
正在Chrome、Firefox等非IE閱讀器上,是沒(méi)有成績(jī)的。正在“純粹”的IE6、IE7、IE8上也是畸形的。(義務(wù)編者:帝位庫(kù))
}
}
}
graphics.endFill();
50);
Math.random() * stage.stageHeight,
Math.random() * stage.stageWidth,
graphics.drawCircle(
graphics.beginFill(Math.random() * 0xFFFFFF, .5);
TextField(getChildAt(0)).appendText('\nDraw a circle');
{
private function drawCircle():void
}
ExternalInterface.addCallback('drawCircle', drawCircle);
ExternalInterface.call("alert", "Hi, flash is ready!");
//正在基于IE的多標(biāo)簽閱讀器中,那里運(yùn)轉(zhuǎn)時(shí)能夠出錯(cuò)
{
private function start():void
}
start();
Security.allowDomain("*");
//答應(yīng)被一切其余沙箱中的js或者flash調(diào)用
addChild(tf);
tf.autoSize = 'left';
tf.text = 'flash ready';
var tf:TextField = new TextField();
{
public function Main():void
{
public class Main extends Sprite
*/
* @author qhwa
* Flash緩存形成的偽沙箱成績(jī)演示
/**
import flash.text.TextField;
import flash.system.Security;
import flash.external.ExternalInterface;
import flash.display.Sprite;
{
package
Flash的源碼:
at Main()
at Main/init()
at Main/start()
at flash.external::ExternalInterface$/call()
at flash.external::ExternalInterface$/_initJS()
SecurityError: Error #2060: 保險(xiǎn)沙箱摩擦:ExternalInterface 調(diào)用者 http://pnq.cc/temp/test-dmm-crssdmn.swf 沒(méi)有能拜訪 http://q.pnq.cc/works/test/test-dmm-crssmn.html。
那樣假如html和flash都安裝了相互能夠拜訪,能否Flash和html之間就能夠相互拜訪了呢?實(shí)踐上是的,但是實(shí)踐上卻沒(méi)有是。
正在Flash播放器運(yùn)轉(zhuǎn)時(shí),將沒(méi)有同起源的資源區(qū)分到金雞獨(dú)立的沙箱(sandbox)內(nèi),沒(méi)有同沙箱之間沒(méi)有能相互操算數(shù)據(jù)(除了指標(biāo)沙箱做過(guò)一些安裝,受權(quán)其余沙箱可拜訪),這就是Flash的跨沙箱成績(jī)。然而正在傲游、360閱讀器、騰訊閱讀器等基于IE的多標(biāo)簽閱讀器中,刷新頁(yè)面的時(shí)分,F(xiàn)lash播放器還是會(huì)拋保險(xiǎn)沙箱謬誤。
。當(dāng)Flash資料(.swf) 和頁(yè)面(.html)沒(méi)有正在同一度域名下時(shí),假如沒(méi)有通過(guò)Flash外部申明System.allowDomain,html無(wú)奈拜訪flash界說(shuō)的接口;沒(méi)有通過(guò)html安裝allowScriptAccess為’always’,F(xiàn)lash也無(wú)奈調(diào)用頁(yè)面上的js因變量。
運(yùn)用下面說(shuō)的“基于IE的多標(biāo)簽閱讀器”拜訪,你會(huì)看到,第一次是畸形的,刷新以后就沒(méi)有畸形。