人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Bookemarkletを作っています(質問その2)
外部のJavaScriptのファイル中にある関数を呼び出したいのですが、何らかの方法で可能でしょうか?

↓イメージ
<a href="javascript:[ここで呼出す]">

●質問者: katsube
●カテゴリ:インターネット ウェブ制作
✍キーワード:JavaScript イメージ ファイル 関数
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● Kenju
●5ポイント

<script type="text/javascript" src="gaibu.js"></script>

上のタグを貼って中の関数を呼べばできます。

<a href="javascript:hoge();">

◎質問者からの返答

いや、そうではなく、イメージ的には

</script>">

というようなことが、大半のブラウザで出来るかということになります。


2 ● erupi
●35ポイント ベストアンサー

http://ma.la/mirrorman/wiki.cgi/%E3%82%B9%E3%82%AF%E3%83%AA%...

大雑把に言うと、技術的には、

<a href="javascript:document.write('<script type=\"text/javascript\" src=\"gaibu.js\">');/*スクリプトがロードされるまで待つ*/;hoge();">

で、出来そうです。document.write()ではなくて、document.body.appendChild()でも良いようです。

>http から 他ドメイン

>他ドメイン、あるいはhttp://localhostも同様。

>IEの場合:読み込める。

>firefoxの場合:読み込める。

>Operaの場合:読み込める。

とあるので、現在メジャーなブラウザであれば可能なようです。

具体例としては、同じサイトにある、

http://la.ma.la/misc/js/jsan.html

のuse関数とwait関数を用いて、

<a href="javascript:use('gaibu');wait('gaibu',hoge());">

こんな感じでいけるかと思います。

#実際に検証はしていません。ご了承下さい。

◎質問者からの返答

なるほど!

ロードを待つ処理を入れる必要がありましたか(^^; うまくいかないワケです。

document.body.appendChild()など、一通り試してみたいと思います。有用な情報ありがとうございました!


3 ● にゃるら
●40ポイント

他の方の回答と重複しそうですが、

/*Bookmarklet*/
javascript:(function(){
var s=document.createElement('script');
s.type='text/javascript';
s.src='http://localhost/bookmarklet.js'; // 外部jsのアドレス
document.body.appendChild(s);
})();

で外部のjsファイルを呼び出す事ができます。

ただし、読み込まれてすぐに外部jsの関数を実行できるわけではないので、

http://la.ma.la/misc/js/jsan.htmlあたりを参考にして何とかしなけりゃなりませんが。


あとBookmarkletはブラウザによって文字制限があったりするので、

上記スクリプトを使って「外部jsを呼び出し→実行」をすると文字制限を回避でき

スマートになるかとおもいます:-)


外部jsを呼び出し、そのまま実行するには、

function hoge() {
alert("hoge");
}
hoge();

見たいにしなきゃいけませんが。

なんか要領を得ない回答ですみません。

◎質問者からの返答

わかりやすい解答ありがとうございました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ