JavaScriptの最近のブログ記事

Litebox2をareaタグから動作させようとする際、正しく設置しているのにFIrefoxやSafariでうまく行かない。ブラックアウトはするものの肝心の画像が出てこない。
解決方法:
rel="lithgbox"の部分をrelでなくlangで動作するようにlightbox.jsを書き換えると動作するようになります。
webサイト構築メモ - Lightbox2でareaタグにrel属性を使うとxhtml validにならない

サイズ指定、かつブロックされないように。ブラウザのポップアップは何かと嫌われ者ですが、先方がそれでもとおっしゃるならしょうがない。
navigateToURL()だとIEでブロックされるのでExternalInterfaceを使ってJavaScriptでやるといい感じです。しかし「Safariだと開かないんだけど」とかいうことになったら処理を分岐させるしかないです。
こちらを参考にさせていただきました。
Safariのポップアップウインドウを開かない件です。

下の例は変数brouserAgentにユーザー情報を格納して、その中のブラウザ名を検出して分岐させています。SafariならnavigateToURLで、それ以外ならExternalInterface.callで。

import flash.external.*; 
var browserAgent = ExternalInterface.call ("function getBrowser(){return navigator.userAgent;}");
btn_mc.addEventListener(MouseEvent.CLICK,popup);
function popup(event:MouseEvent) {
	var url:String=new String();
	url="http://endlessblank.com/";
	if (browserAgent != null && browserAgent.indexOf ("Safari") >= 0) {
		var req:URLRequest=new URLRequest(url);
		navigateToURL(req,"_blank");
	} else {
		ExternalInterface.call("window.open", url, "_blank","scrollbars=yes,width=300,height=240");
	}
}

Safariではブラウザ側でポップアップさせない設定になっていると、ウインドウサイズ指定ありでポップアップさせることはできないっぽいです。一旦サイズ指定なし(navigateToURL)で別ウインドウで開き、開いた側のページにてJavaScriptでサイズを変えるというゴリ押しならば可能です。
Safariもサイズ指定できるようです。
SafariでもFlashからサイズ指定の新規ウィンドウをポップアップさせる - jp.ikekou.blog.Main

巷ではActionScript2.0と3.0が混在していたり、wmodeの設定、ブラウザのバージョン、OSによってポップアップの挙動が違うというケースがあり、今のところ「間違いない」方法はなさそうです。そもそもそもポップアップブロックを突破するというのはユーザビリテ(ry
こちらはFlex環境にて解説されていますが、いろいろな条件下で検証されています。サンプルページがとっても素敵。
Flexからポップアップウィンドウを出す - c9日記

記事にプログラムやソースコードを載せる際に見やすくなるであろうSyntaxHighlighter 1.5.1を導入しました。
Javascriptを使用しているので、オフにしている人には効果なしです。。
デフォルトではActionScript未対応ですが、プラグインという形でこちらで公開されています。ありがたい。SyntaxHighlighter.cssに.func追記で本領発揮。
dp.SyntaxHighlighterでActionScript 2.0/3.0のコードをハイライトする


↓こんな感じです。(バージョン2.0.320に変更しました)

btn.addEventListener(MouseEvent.CLICK,onclick);
function onclick(e:MouseEvent):void{
	var url:URLRequest=new URLRequest("http://endlessblank.com/");
	navigateToURL(url,"_blank");
}

問題点(1.5.1)
Windows版Safari4で機能しないようです。
何やらMTだとIEでコードが繰り返して表示されてしまう模様。ソースを見ると繰り返されていないのでJavascriptが原因だとは思うのだけれど。。ブラウザの繰り返し部分をどこかにコピペするとさらに繰り返されているという怪奇現象が起こります。MTでソースコードを綺麗に表示 - JUN-Hacks Blogによると、最新バージョンの2.0なら繰り返される現象は回避できるようです。このブログではとりあえずdivで囲ってhight指定、overflow:hiddenで応急処置しています。
追記 : ある日突然FirefoxとSafariあたりでJavaScriptがうまく動かなくなったので、これを機会に最新版2.0.320を導入しました。カスタマイズし易くなり、AS3.0にも対応していてよい感じ。

  • RSS

カテゴリ