9

iframe内からFancyBoxを閉じようとしていますが、parent.$常にundefinedです。これは私のiframeJavaScriptです:

 <script type='text/javascript' 
  src='http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js'>
 </script>
 <script type="text/javascript">
 jQuery(document).ready(function($){
     (function($) {
         $.fn.closeFancyBox = function() {
             $(this).click(function() {
                 parent.$.fancybox.close();
             });
         };
      })(jQuery);
      $('#cancel').closeFancyBox();
      });
 });
 </script>

との交換parent.$.fancybox.close();alert('clicked');問題なく機能します。iframeが同じドメインにあるのはparent.$なぜかわかりません。undefined

FancyBoxforWordpressプラグインでWordPress2.9.1を使用しています。

  • メインページ://server.local/web/test/index.php
  • iframeページ://server.local/web/test/wp-content/plugins/wp-test/test.htm

これらのURLの最初はメインページで、2番目はiframeページです。server.local私のホームテストサーバーです。

何か案は?役立つ場合は、ソース全体をペーストビンすることができます。

4

9 に答える 9

7

WordPressはjQueryをnoConflictモードで実行するため、未定義です。代わりにこれを使用してください:

parent.jQuery.fancybox.close();

noConflictmodeは$、jQueryと等しくないことを意味します。jQueryで通常アクセスできるものにアクセスするには、明示的に使用する必要があります$

于 2010-02-09T07:06:21.707 に答える
5

私の答えはワードプレスとは関係ありませんが、一般的にはファンシーボックスに関するものです。

iframeで、メインのjqueryスクリプト(jquery-1.5.2.min.js)を含めた場合、メインページのスクリプトと競合し、この場合、 parent。$。fancyboxは機能しません。

他のjquery関連のもの(たとえば、タブなど)はiframe内で機能します。したがって、初心者プログラマーは、iframe内の2番目のjqueryスクリプトが悪役であることに気付くことはありません。

于 2011-09-02T00:56:19.157 に答える
3

私はこれをしなければなりませんでした:

window.top.window。$。fancybox.close();

以前にタイプエラーが発生しました。

于 2011-05-09T21:59:49.733 に答える
3

parent.fancybox.close()のバリエーションは私には機能しませんでした、いくつかのlibの競合である必要があります。

これが最新のfancyboxの回避策です。.hide()メソッドの代わりにcss displayプロパティを使用する必要があります。その場合、fancyboxは再び開きません。

parent.jQuery('#fancybox-overlay').css('display', 'none');
parent.jQuery('#fancybox-wrap').css('display', 'none');
于 2011-05-15T23:32:06.517 に答える
1

私は同じ問題を抱えていて、私が使用していないことに気づきました

type:'iframe'

fancyboxを呼び出すと、問題が解決しました

于 2012-01-20T07:53:08.943 に答える
1

これは私のために働きます;)

<a href="javascript:parent.jQuery.fn.fancybox.close();" >

この投稿をありがとう、それは実際に私を少し導きました...私はほんの数分しかかからなかったので気分が悪くなり、Wordpress用のFancyboxがどれほどイライラするかを知っています!!

于 2010-07-13T04:21:13.297 に答える
1

提案はどれも私にはうまくいきませんでした。次のコードを使用して回避する必要がありました。最新バージョンは、parent.jQuery.fancybox.close();をサポートしている可能性があります。アプローチしますが、古いバージョンはそれで動作しません。

古いバージョンのplugins/Jqueryを使用している既存のサイトの場合は、これを試してください

function close_window()
{
 $("#fancy_outer",window.parent.document).hide();
 $("#fancy_overlay",window.parent.document).hide();
 //window.top.window.$.fancybox.close(); this also does not work :(
}

Iframeコンテンツ内で関数close_windowを宣言して使用できます。

于 2010-08-10T06:54:49.090 に答える
0

これをデバッグしようとしてかなりの時間を費やしましたが、どこにも行きませんでした。そこで、「FancyBox for WordPress」プラグインを最新バージョンのFancyBoxに切り替えたところ、修正されました。本当に早くそれを試してみるべきだった。

WordPressとそのさまざまなプラグインでしばらく過ごした後、プラグインに頼るのではなく、手動で呼び出すことをお勧めします。それは、自分が何をしているのかを知っていれば、そこにいる必要がない、もう1つの複雑さの層を追加するだけです。

WordPressの親ウィンドウjQueryにiframeの適切な構文を指摘してくれたDougに感謝します。

于 2010-02-13T04:55:55.247 に答える
0

こんにちは、Wordpress3.0でFancyBoxの手動インストールを使用してFancyBox iFrameを閉じるのに問題がある人は誰でも:

iframeで次のリンクを使用します。

<a href="#" onClick="parent.jQuery.fancybox.close();" title="Close window">close fancybox</a>

できます :)

于 2010-07-16T11:28:33.240 に答える