1

jQuery Lightbox Evolution プラグインを使用しており、iframe 内に写真のリンクがあります。親ウィンドウで、ライトボックスをiframeの外側で開きたいです。

FAQ では、親にいくつかのコードを配置できることがわかりました。

<script type="text/javascript">
  function frameload(iframe) {
    var doc = iframe.contentWindow || iframe.contentDocument;
    if (doc.document) { doc = doc.document; };

    $('.lightbox', doc.body).lightbox();
  };
</script>

しかし、私のコードはphpで動的にインラインで生成されるため、機能しません。したがって、ヘッドタグでプラグインを「初期化」せず、コードでそれを呼び出すだけです。

プラグインを初期化する私のコードがあります:

echo 
'<a style="cursor:pointer;" id="open_'.$emp_alias.'"></a>';

echo 
'<script type="text/javascript">
   $(document).ready(function(){
     $("#open_'.$emp_alias.'").click(function(ev) {
        $.lightbox([';
        while($images_array = mysql_fetch_assoc($query_emp_images)) {
     echo '"/destaques/'.$images_array['path'].'",';
    }
    echo
         ']);
    ev.preventDefault();
    });                                       });
</script>';

これを親ウィンドウにロードする方法はありますか?

ありがとう

4

2 に答える 2

2

それはドキュメントにあります:

9.iframe 内から親ウィンドウでライトボックスを開くにはどうすればよいですか? 最初に行う必要があるのは、スクリプトを親ウィンドウにインストールすることですが、初期化しないでください。jQuery(document).ready を使用しないでください。代わりに、以下のコードを追加してください。

<script type="text/javascript">
function frameload(iframe) {
    var doc = iframe.contentWindow || iframe.contentDocument;
    if (doc.document) { doc = doc.document; };

    jQuery('.lightbox', doc.body).lightbox();
};
</script>

onload="frameload(this);" を挿入 iframe マークアップで。

<iframe src="iframe_child.html" onload="frameload(this);" width="500" height="500"> </iframe>  

子ページの画像をクリックすると、ライトボックスが親ページに表示されます。問題を回避するために、子ページのスクリプトを忘れずに削除してください。

于 2013-01-03T02:47:55.147 に答える
0

私にとってうまくいった簡単な回避策は、親ウィンドウでライトボックスを初期化してから、空のプレースホルダー リンクを作成し、href を変更してプレースホルダー リンクをクリックする関数を作成することでした。

親ウィンドウのヘッダーまたはフッターで:

<script type="text/javascript">
  $(function () {
    $('.lightbox').lightBox();
  });

  function image_preview(url)
  {
     $('#fakebox').attr('href',url);
     $('#fakebox').trigger('click')   
  }
</script>

親ウィンドウの本体のどこかに:

<a href="" class="lightbox" id="fakebox"></a>

したがって、iframe で親関数を呼び出して、fancybox を起動します。

<a href="JavaScript:void(0);" class="btn btn-tertiary btn-small" onClick="parent.image_preview('http://static8.depositphotos.com/1007989/1011/i/950/depositphotos_10118078-Grinning-Smiley.jpg')">Preview</a>
于 2013-03-26T08:02:21.083 に答える