ドキュメント全体ではなくdiv要素を使用してexeccommandをバインドする方法があります。これを試します:
document.getElementById('div').execcommand(...)
しかし、エラーがあります:
execcommand is not a function
ドキュメント全体ではなくdiv要素だけでexeccommandをバインドする方法があります!! iframe メソッドを使用するのは好きではありません。
ドキュメント全体ではなくdiv要素を使用してexeccommandをバインドする方法があります。これを試します:
document.getElementById('div').execcommand(...)
しかし、エラーがあります:
execcommand is not a function
ドキュメント全体ではなくdiv要素だけでexeccommandをバインドする方法があります!! iframe メソッドを使用するのは好きではありません。
TextRange
これは、IE のオブジェクトにはメソッドがあるため、他のブラウザーよりも IE の方が簡単ですexecCommand()
。つまり、選択を変更して一時的に有効にする必要なく、ドキュメントのセクションでコマンドを実行できますdesignMode
(これは、他のブラウザーで行う必要があることです)。 )。これは、あなたが望むことをきれいに行うための関数です:
function execCommandOnElement(el, commandName, value) {
if (typeof value == "undefined") {
value = null;
}
if (typeof window.getSelection != "undefined") {
// Non-IE case
var sel = window.getSelection();
// Save the current selection
var savedRanges = [];
for (var i = 0, len = sel.rangeCount; i < len; ++i) {
savedRanges[i] = sel.getRangeAt(i).cloneRange();
}
// Temporarily enable designMode so that
// document.execCommand() will work
document.designMode = "on";
// Select the element's content
sel = window.getSelection();
var range = document.createRange();
range.selectNodeContents(el);
sel.removeAllRanges();
sel.addRange(range);
// Execute the command
document.execCommand(commandName, false, value);
// Disable designMode
document.designMode = "off";
// Restore the previous selection
sel = window.getSelection();
sel.removeAllRanges();
for (var i = 0, len = savedRanges.length; i < len; ++i) {
sel.addRange(savedRanges[i]);
}
} else if (typeof document.body.createTextRange != "undefined") {
// IE case
var textRange = document.body.createTextRange();
textRange.moveToElementText(el);
textRange.execCommand(commandName, false, value);
}
}
例:
var testDiv = document.getElementById("test");
execCommandOnElement(testDiv, "Bold");
execCommandOnElement(testDiv, "ForeColor", "red");
おそらくこれはあなたを助けるでしょう:
このページのコード例 1には、関数を使用して div に execcommand が含まれています。それがあなたの求めているものかどうかわかりませんか?幸運を!
編集:ここにコードを配置する方法を見つけました:o
<head>
<script type="text/javascript">
function SetToBold () {
document.execCommand ('bold', false, null);
}
</script>
</head>
<body>
<div contenteditable="true" onmouseup="SetToBold ();">
Select a part of this text!
</div>
</body>
Javascript:
var editableFocus = null;
window.onload = function() {
var editableElements = document.querySelectorAll("[contenteditable=true]");
for (var i = 0; i<editableElements.length; i++) {
editableElements[i].onfocus = function() {
editableFocus = this.id;
}
};
}
function setPreviewFocus(obj){
editableFocus = obj.id
}
function formatDoc(sCmd, sValue) {
if(editableFocus == "textBox"){
document.execCommand(sCmd, false, sValue);
}
}
HTML:
<div id="textBox" contenteditable="true">
Texto fora do box
</div>
<div contenteditable="true">
Texto fora do box
</div>
<button title="Bold" onclick="formatDoc('bold');">Bold</button>