behavior:url() の制限?
背景画像をランダムに変えるの続きです
電脳探索者(InternetExplorer)独自機能だそうですが
behavior:url()を使って、CSSからJavaScriptを呼び出してみよう
そう考えたワタクシは、ためしにひとつ
「マウスが乗ると画像が変化する」つまりロールオーバーを試みました
<script type="text/javascript">
<!--
attachEvent('onmouseover', over);
function over() {
this.src = 'http://~/***02.jpg';
}
attachEvent('onmouseout', out);
function out() {
this.src = 'http://~/***01.jpg'; }
// -->
</script>
こいつに、例えば「ro.htc」という名前をつけておきます
でもってこちら(エキサイトブログ)側のCSSに
img#RO {behavior: url(http://~/ro.htc);}
そしてHTML本文中の変化させたい画像に
<img id="RO" src="http://~/***01.jpg">
これで大丈夫のはずでした
ところが、ファイルをロードしている最中に
画面の下にあるステータスバーにチラッとメッセージが出てくるのです
「実行しましたがエラーが出ました」と
不思議なことにHTMLファイルとhtcファイルを同じ場所に置いてやると
ちゃんとエラーを出さずにファイルをロードして
マウスが画像に乗ればロールオーバーもするのです
同じ場所(この場合はプロバイダのウェブサーバ)に置いたといっても
相対パスで呼び出しているのではなく
ちゃんとhttp://で始まるURLパスで呼び出しているのです
(プロバイダにtext/x-componentとMIME設定してもらっています)
エキサイトブログのサーバにあるのとまったく同じHTMLファイルなんです
エキサイトのサーバに制限がかかっているかもしれないと思ったので
さらに別のサーバにHTMLファイルを置いて試しましたが、やっぱり駄目
どうして一緒にあると大丈夫なのに
離して置いたら駄目になってしまうのでしょうか?
ひとつ考えられるのがブラウザ自体にセキュリティが備わっているということ
他人のhtcファイルを勝手に使わないように
ドメインが違うサーバからは引っ張ってこれないようになっているのかな
でも、それじゃURLでファイル指定をしている意味が判らない
なにかhtcファイルの先頭に「私を外に連れてって」という
許可を与える宣言がありそうな気がする
それが判らない…
この問題も置くが深そうです
なんか、今日は判らないことばっかり
…寝よ