0

私はCRM 2011(編集:ロールアップ13)で作業しており、現在のレコードのIDをモーダルポップアップに表示するリボン用の小さな(dev)ヘルパーをコーディングしました(より重いライブラリに対してpicoModalを使用するので、スクリプトを埋め込みます)。

とにかく、CRM の何か (スクリプトまたはその他) がグローバル レベルでのテキスト選択を妨げており、ポップアップがほとんど役に立たなくなっています。ブラウザ固有のすべての設定を含め、ポップアップでのテキスト選択を無効にする最も明白なものをオーバーライドしようとしました-foo-user-select: text;css プロパティ、unselectable 属性をリセットし、onselectstart イベントを not にリセットする単純な試みを行いましたreturn false;(ポップアップは picoModal によって動的に構築されるため、これを適用する必要があります)。

picoModal(entityName + ":<div id='info-region' unselectable='off' onselectstart='return true;'  style='user-select: text; -ms-user-select: text; -webkit-user-select: text; -khtml-user-select: text; -moz-user-select: text; -o-user-select: text;'><code><pre>" + str + "</pre></code></div><i>(press [CTRL]+[C] to copy the " + entityName + " entities ID to the clipboard)</i>");

ポップアップでテキストを選択できないという私の主な問題とは別に、重要なデータのコピーを簡単にするために、いくつかのコードを使用してstrペイロード内の関連テキストを選択し、簡単にコピーできるようにします (SO から盗用しました)。もうリンクはありませんが、知っている場合は著者を引用してください):

function selectText(entity) {
    var doc = document;
    var text = doc.getElementById(entity);

    if (document.body.createTextRange) { // ms
        var range = document.body.createTextRange();
        range.moveToElementText(text);
        range.select();
    } else if (window.getSelection) { // moz, opera, webkit
        var selection = window.getSelection();
        var range = doc.createRange();
        range.selectNodeContents(text);
        selection.removeAllRanges();
        selection.addRange(range);
    }
}

コードはテスト ページ (クロス ブラウザー) で動作しますが、一度 Internet Explorer で CRM 2011 にアップロードされると、モーダル ポップアップのすべてのテキストが選択できなくなり、Firefox ではテキストは選択可能になりますが、選択された範囲は時間までにフォーカスされなくなります。それはユーザーに表示されるので、私が考えもしなかったテキスト選択を制限する方法があるに違いないか、既知の方法の1つを正しく上書きしていないと思います。

4

2 に答える 2

2

クラス "ms-crm-Field-Data-Print" を追加して、テキストを選択可能にすることができます。ページ全体のテキスト選択を有効にするには、「window._UI_TEXT_SELECTABLE = "1";」を設定します。ジャバスクリプトで。

http://blog.customereffective.com/blog/2014/05/selectable-text-on-crm-web-resources-with-clientglobalcontext.html

于 2014-05-02T15:45:24.700 に答える
1

可能な解決策は、 a を使用して変数textareaを保持することですstr

picoModalこの方法で呼び出すだけです:

picoModal(entityName + "<textarea id='guidarea' readonly rows='1'>" + str + "</textarea><i>(press [CTRL]+[C] to copy the " + entityName + " entities ID to the clipboard)</i>");
document.getElementById('guidarea').focus(); // necessary for Google Chrome
document.getElementById('guidarea').select();

また、複数のブラウザーでテキストを選択するのに十分な関数であるため (IE 9、Chrome 27、Firefox 21 でテストtextarea済み)select()

于 2013-05-28T11:16:18.667 に答える