私は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つを正しく上書きしていないと思います。