ポイントは簡単です。ユーザーは、ボタンを動的に挿入するスクリプトを自分のWebサイトに配置します。 ボタンをクリックすると、ウィンドウがポップアップし、リソースからロードされたユーザーページが表示されます。
問題は明らかです。
- ユーザーのサイトでjQueryと必要なプラグインが使用されているかどうかを判断する必要があります。 そうでない場合は、両方を動的にロードします。 サイトでjQueryを使用している人と使用していない人に別々のコードを使用します-どんな状況でもロードは言うまでもありません(特にプラグインではグリッチが発生する可能性があります)。
- 押されたjQueryの重量は約60 kBであり、スワップの場合、コードを実行する前に完全にロードして初期化する時間がありません。
グッズには、fancyboxプラグインを使用しました。 ライトボックス効果のある写真だけでなく、iframeの他のコンテンツも表示できます。
以下はコードです。
ユーザーがサイトに挿入するコードは次のようになります。
< script type = 'text/javascript' > var ExtendVar='ExtendVar'; < / script > < script type = 'text/javascript' src = 'http://MySite.ru/js/script.js' >< / script >
< script type = 'text/javascript' > var ExtendVar='ExtendVar'; < / script > < script type = 'text/javascript' src = 'http://MySite.ru/js/script.js' >< / script >
script.jsでは、次のように記述します。
- 新しい MyClass ( ExtendVar ) ;
- 関数 MyClass ( ExtendVar ) {
- これ 。 ExtendVar = ExtendVar ;
- if ( this。ExtendVar ) {
- ドキュメント。 write ( "<a class = 'iframe fancy' href = 'http://MySite.ru/" + this。ExtendVar + "' title = 'MySite.ru /" + this。ExtendVar + "' target = '_ blank' > <img src = 'http://MySite.ru/img/dezign/MyButton.png' style = 'border:0 none; position:relative;' alt = 'MySite.ru' /> </a> " ) ; //ボタンを挿入します
- //このサイトでjQueryが使用されているかどうかを確認します
- if ( typeof ( jQuery ) == 'undefined' ) { //そうでない場合は、接続する
- var JQ =ドキュメント。 createElement ( 'script' ) ;
- Jq。 src = 'http://MySite.ru/js/jquery.js' ;
- Jq。 type = 'text / javascript' ;
- ドキュメント。 getElementsByTagName ( 'head' ) [ 0 ] appendChild ( JQ ) ;
- }
- waitJQ ( ) ; // jQueryのロードと初期化を期待します
- } ;
- 関数 waitJQ ( ) {
- if ( typeof ( jQuery ) == 'undefined' ) {
- ウィンドウ。 setTimeout ( waitJQ 、 100 ) ; // jQueryがロードされるまで100ミリ秒ごとに再帰
- }
- その他 {
- // jQueryを正常に決定した後、必要なプラグインがこのサイト(この場合はfancybox)で使用されているかどうかを確認します
- if ( typeof ( jQuery。fn。fancybox ) == 'undefined' ) { //そうでない場合は、接続する
- jQuery ( "head" ) 。 append ( "<script type = 'text / javascript' src = 'http://MySite.ru/js/fancybox.js'> </ script> <link rel = 'stylesheet' href = 'http:// MySite。 com / css / fancybox.css 'type =' text / css 'media =' screen '/> " ) ;
- }
- waitFB ( ) ; // fancyboxプラグインのロードと初期化を待機しています
- }
- }
- 関数 waitFB ( ) {
- if ( typeof ( jQuery。fn。fancybox ) == 'undefined' ) {
- ウィンドウ。 setTimeout ( waitFB 、 100 ) ; // fancyboxがロードされるまで100ミリ秒ごとに再帰
- }
- その他 {
- jQuery ( 'a.fancy' ) 。 fancybox ( { frameHeight : 190 、 frameWidth : 350 } ) ; //実際に効果を初期化します
- }
- }
- }
例はサイトMoiaVizitka.ruで見ることができます。 誰もが便利になれば、嬉しいです。