1

advlink プラグインを使用すると、「ターゲット」のデフォルト値は「_self」になります (つまり、リンクは同じウィンドウ/タブで開きます)。リンクがデフォルトで新しいウィンドウ/タブで開くようにするにはどうすればよいですか?

4

1 に答える 1

0

advlink.jsにあるファイルに次の変更を加える必要があります[yourTinymcePluginsDirectory]/advlink/js/advlink.js

次の部分を見つけます。

    function getTargetListHTML(elm_id, target_form_element) {

        var targets = tinyMCEPopup.getParam('theme_advanced_link_targets', '').split(';');
        var html = '';

        html += '<select id="' + elm_id + '" name="' + elm_id + '" onchange="this.form.' + target_form_element + '.value=';
        html += 'this.options[this.selectedIndex].value;">';
        html += '<option value="_self">' + tinyMCEPopup.getLang('advlink_dlg.target_same') + '</option>';
        html += '<option value="_blank">' + tinyMCEPopup.getLang('advlink_dlg.target_blank') + ' (_blank)</option>';
        html += '<option value="_parent">' + tinyMCEPopup.getLang('advlink_dlg.target_parent') + ' (_parent)</option>';
        html += '<option value="_top">' + tinyMCEPopup.getLang('advlink_dlg.target_top') + ' (_top)</option>';

オプションの順序を変更する必要があります。したがって、「_blank」オプションを一番上に置くだけです。

        html += '<option value="_blank">' + tinyMCEPopup.getLang('advlink_dlg.target_blank') + ' (_blank)</option>';
        html += '<option value="_self">' + tinyMCEPopup.getLang('advlink_dlg.target_same') + '</option>';
        html += '<option value="_parent">' + tinyMCEPopup.getLang('advlink_dlg.target_parent') + ' (_parent)</option>';
        html += '<option value="_top">' + tinyMCEPopup.getLang('advlink_dlg.target_top') + ' (_top)</option>';

そして出来上がり、それだけでした。でしたか?いいえ!

これは確かに機能しますが、リンクのターゲットを に戻そうとすると_self、HTML は正しく更新されますが、ドロップダウンには誤って_blankオプションが選択されたように表示されます。これは、_selfオプションを選択したときにtargetTinymce 属性が更新されず_selfに "" に更新されるために発生します。つまり、空の文字列です。したがって、_selfスクリプトを選択すると、"" という名前の属性が検索されますが、もちろん何も見つからないため、デフォルトで最初のオプションが選択されます。これは最初のオプションが の場合は機能しますが、 が最初のオプションで_selfない場合_selfは機能しません。

この問題を解決するには、ターゲットの Tinymce 属性が空の文字列に設定されている場合、_self代わりに指定された属性を探すようにスクリプトに指示する必要があります。そうすれば、最初のオプションでなくても見つけることができます。

これを実現するには、スクリプトの動作をもう 1 つ変更する必要があります。次の行を見つけます。

selectByValue(formObj, 'targetlist', inst.dom.getAttrib(elm, 'target'), true);

そしてそれを次のように置き換えます:

    var target_value = inst.dom.getAttrib(elm, 'target');
    if (inst.dom.getAttrib(elm, 'target') == ""){
        target_value = "_self";
    }//end if

    selectByValue(formObj, 'targetlist', target_value, true);

_blankこれで、デフォルトのターゲット オプションですべてが完全に機能するはずです。

于 2018-02-15T16:26:17.493 に答える