2

bPopupプラグインを使用して、iframe2 つの別々のページを開きます。

iframe を作成して「ポップアップ」する小さなスクリプトを作成しました。この同じスクリプト (正確な URL など) が両方のページで参照されています。

jQuery('#student_iframe_container').css({
      'display': 'none'
});

jQuery('body').on("click", ".student_iframe_popup", function() {
      jQuery('#student_iframe_container').remove();

      var popUpHTML = '<div id="student_iframe_container"><div class="b-close"><img src="/user/74/187888.png" title="Close" /></div><iframe></iframe></div>';
      jQuery('body').append(popUpHTML);

      jQuery('.b-close').css({
            'background-color': 'none',
            'padding': '8px',
            'font-size': '14px',
            'font-weight': 'bold',
            'width': '52px',
            'text-align': 'center',
            'cursor': 'pointer',
            'overflow' : 'auto'
      });

      jQuery('iframe').css({
            'margin': '0px auto',
            'background-color': 'none',
            'border': 'none'
      });

    var student_id = 'student_' + jQuery(this).attr("id");

    jQuery('iframe').attr("width", 800);
    jQuery('iframe').attr("height", 670);
    jQuery('iframe').attr("id", student_id);
    jQuery('iframe').attr("src", '/index.phtml?d=825090');

    jQuery('#student_iframe_container').bPopup({
            position: ['auto', 2]
      });
});

このスクリプトのアイデアは、<a href="javascript:void(0);" class="student_iframe_popup" id="123456">student</a>自分のページにアクセスでき、残りはスクリプトが行うというものです。

私のページの両方で、ポップアップはiframe正しく機能します。問題は配置にあります。あるページではiframe水平方向の中央揃えで正しく表示されますが、別のページでは左揃えで表示されます。

フラグの割り当てページ の配置を修正正しい配置

マイ フラグページ の配置が正しくない不適切な位置合わせ

FireBug の HTML を見ると、かなり面倒です。

フラグを割り当てる:

<div class="b-modal __b-popup1__" style="background-color: rgb(0, 0, 0); position: fixed; top: 0px; right: 0px; bottom: 0px; left: 0px; opacity: 0.7; z-index: 9998; cursor: pointer;"></div>
<div id="student_iframe_container" style="left: 48.5px; position: absolute; top: 2px; z-index: 9999; opacity: 1; display: block;">
    <div class="b-close" style="padding: 8px; font-size: 14px; font-weight: bold; width: 52px; text-align: center; cursor: pointer; overflow: auto;">
        <img title="Close" src="/user/74/187888.png">
    </div>
    <iframe width="800" height="670" style="margin: 0px auto; border: medium none;" id="student_138871" src="/index.phtml?d=825090"></iframe>
</div>

このstudent_iframe_popupクラスは、HTML の次のセグメントで使用されます。

<li>
    <a id="138929" class="student_iframe_popup" href="javascript:void(0);">Student Name</a>
    <div>23<img alt="Red Flags" src="/user/74/187894.png">&nbsp;0<img alt="Interventions" src="/user/74/187895.png"></div>
</li>

私のフラグ:

<div class="b-modal __b-popup1__" style="background-color: rgb(0, 0, 0); position: fixed; top: 0px; right: 0px; bottom: 0px; left: 0px; opacity: 0.7; z-index: 9998; cursor: pointer;"></div>
<div id="student_iframe_container" style="left: 0px; position: absolute; top: 2px; z-index: 9999; opacity: 1;">
    <div class="b-close" style="padding: 8px; font-size: 14px; font-weight: bold; width: 52px; text-align: center; cursor: pointer; overflow: auto;">
        <img title="Close" src="/user/74/187888.png">
    </div>
    <iframe width="800" height="670" style="margin: 0px auto; border: medium none;" id="student_138978" src="/index.phtml?d=825090"></iframe>
</div>

このstudent_iframe_popupクラスは、HTML の次のセグメントで使用されます。

<tr class="open">
    <td class="student">
        <a id="138978" class="student_iframe_popup" href="javascript:void(0);">Student Name</a>
    </td>
    <td>2nd Oct 2013</td>
    <td>10:24am</td>
    <td>IT Misuse</td>
    <td>Behaviour Unit</td>
    <td>Registration</td>
    <td>Referred to tutor</td>
    <td id="1994"><select><option value="O">Pending</option><option value="C">Completed</option></select></td>
    <td rowspan="2" class="centre"><img title="Notify administrator of mistake made on Flag given to Joshua Nichol?" src="/user/74/187888.png" id="1994"></td>
</tr>

関連する CSS:

#container table { width: 100%; }
#container table img { width: 16px; }
#container th { text-align: left; border-bottom: 2px solid #999; padding-bottom: 2px; text-transform: uppercase; font-weight: normal; font-size: 10px; }
#container tr.open { background-color: #ffd6d6; }
#container tr.no_action { background-color: #ffead6; }
#container td { padding: 8px 0 4px 0; font-size: 12px; }
#container tr.border td {  border-bottom: 1px solid #999; padding: 4px 0 8px 0; font-size: 11px; }
.student { font-weight: bold; padding-left: 5px; }

明らかに矛盾は次の行にあります。

右...

<div id="student_iframe_container" style="left: 48.5px; position: absolute; top: 2px; z-index: 9999; opacity: 1; display: block;">

違う...

<div id="student_iframe_container" style="left: 0px; position: absolute; top: 2px; z-index: 9999; opacity: 1;">

しかし、これらのスタイルを書いているのは私ではなく、bPopup です。私のページには、bPopup に関連する CSS スタイルはありません。私が変更しているのは、この投稿の冒頭にある JavaScript ファイルにあるものだけです。

したがって、bPopup がleft:0pxあるページとleft:48.5px別のページを選択する理由を知っている人はいますか?

4

2 に答える 2

3

JavaScript の div に幅を追加してみてください。

var popUpHTML = '<div id="student_iframe_container" style="width:800px"><div class="b-close"><img src="/user/74/187888.png" title="Close" /></div><iframe></iframe></div>';

(もちろん、その div にクラスを使用することもできます。div 内でスタイルを使用することは、簡単なテストにすぎません。)

bPopup では、水平位置を取得するコードは次のとおりです。

hPos = fixedHPos ? o.position[0] : (wW - $popup.outerWidth(true)) / 2

wW (ウィンドウの幅) は、ポップアップの幅とほぼ同じです。divでポップアップ幅を設定すれば直ると思います。

于 2013-10-10T23:56:43.083 に答える
2

わかりました、遅くなりましたが、私はこれを調べ始めました。

HTML、jQuery、および CSS をjsFiddleで大雑把に取得することができました。きれいじゃない!

私のフィドルで私が追加したことに注意してください:

style="position:absolute;"

「popUpHTML」変数で。「学生名」をクリックすると、ポップアップが中央に表示されますが、どちらが必要ですか?

これを行わないと、bPopup の動作がおかしくなることがわかりました (bPopup の潜在的なバグですか?)。popUpHTML 文字列に追加したスタイルを削除してリンクをクリックすると、ポップアップが画面の左側に描画されます。ただし、jsfiddle (つまり、右下のペイン) でビューポートを調整すると、 bPopup の位置計算がトリガーされるように見えるため、popUp の位置が変更されます。

したがって、問題を解決するには、「popUpHTML」を介してレンダリングする student_iframe_container div に位置スタイルを明示的に設定する必要がある可能性があります。

于 2013-10-11T00:17:03.127 に答える