1

thefancy.comサイトと同様のブックマークレット機能を作成しようとしています。ブックマークレットボタンをクリックすると、他のWebサイトhttp://wonderstreet.localhost.comにあるjsファイルが読み込まれ、ヘッドに追加されます。現在のドキュメントのセクションで、iframeを作成し、現在のドキュメントの本文に追加します。

上記のjsファイルには、このiframeから呼び出す必要のあるさまざまな関数が含まれています。たとえば、iframeには[閉じる]ボタンがあり、クリックすると上記のjsファイルにある関数を呼び出す必要があります(この関数は閉じます)またはiframeを削除します)

iframeが正しく作成され、表示されます(現在のドキュメントのすべての画像を取得してiframeに表示する必要があります)問題は、閉じるボタンをクリックすると次のように表示されることです:ReferenceError:関数が定義されていませんどうすればこれを解決できますか? [jqueryではなくコアJavaScriptを使用しています]

これがjsファイルのコードです=>

function create_bookmarklet_iframe(thewonderstreet_userid) {
 var ifra=document.createElement('iframe');ifra.src="http://localhost.com/index.php/image_picker?userid="+userid;ifra.setAttribute("id","bookmarklet_iframe");ifra.setAttribute('allowtransparency',true);ifra.setAttribute('style','width:279px;height:372px;border:1px solid #4c515c;position:fixed;top:10px;right:10px;z-index:10000001;margin:0;background-color:#eff1f7;');void(document.body.appendChild(ifra));

}

function remove_bookmarklet_iframe(id) {
    var element = document.getElementById(id);
    element.parentNode.removeChild(element);
}

そして、これはブックマークレットコードです:

javascript:%20(function%20()%20{%20%20%20%20%20userid%20=%20'724c5a0e49e4dac588a90e17233982493027197d';%20%20%20%20%20var%20search_url%20=%20'http://localhost.com/javascript/bookmarklet_js.js';%20scripts_finder%20=%20document.getElementsByTagName('script');%20var%20found_url%20=%200;%20for%20(var%20i%20=%20scripts_finder.length;%20i--;)%20{%20var%20actual_url%20=%20scripts_finder[i].src.split("?");%20if%20(search_url%20==%20actual_url[0])%20{%20found_url++;%20}%20}%20if(found_url%20<=%200)%20{%20s=document.createElement('SCRIPT');s.type='text/javascript';s.src='http://localhost.com/javascript/bookmarklet_js.js?_='+(Math.random());document.getElementsByTagName('head')[0].appendChild(s);%20}%20%20var%20s_id%20=%20'bookmarklet_iframe',%20%20%20%20%20%20%20%20%20s_avail%20=%20document.getElementById(s_id),%20%20%20%20%20%20%20%20%20can_continue%20=%20true,%20%20%20%20%20%20%20%20%20t;%20%20%20%20%20if%20(s_avail)%20{%20%20%20%20%20%20%20%20%20can_continue%20=%20false;%20%20%20%20%20%20%20%20%20alert('Alreadyopen');%20%20%20%20%20}%20%20%20%20%20setTimeout(function()%20{%20if%20(can_continue)%20{%20create_bookmarklet_iframe(userid);%20}%20},1000);%20})();
4

1 に答える 1

0

OK、自分で解決しました。iframe を作成する代わりに div を使用していたので、基本的には iframe を削除し、javascript で div を作成してドキュメント本文に追加しました。

于 2013-08-26T07:32:23.667 に答える