में बाद में उपयोग के लिए चयन सहेजना मेरे पास डिज़ाइन मोड के साथ एक आईफ्रेम में एक समृद्ध टेक्स्ट एडिटर है जो टेक्स्ट के छोटे ब्लॉक के लिए सिंटैक्स हाइलाइटिंग करता है। मैं इसे कुंजीपटल पर हाइलाइटिंग अपडेट करना चाहता हूं, लेकिन डीओएम के साथ गड़बड़ करने से फ्रेम धुंधला हो जाता है, इस प्रकार हर बार जब आप एक कुंजी दबाते हैं तो कैरेट गायब हो जाता है और आप अब और टाइप नहीं कर सकते हैं। अगर कोई पार्सर याद रख सकता है कि कैरेट कहां है, और फिर आईफ्रेम को फिर से शुरू करें और कैरेट को प्रतिस्थापित करें तो यह कोई समस्या नहीं होगी। मैंने getSelection()
और उसके रिश्तेदारों को पढ़ा है, लेकिन स्पष्ट रूप से ऑनकीप चयन को हटा देता है, कम से कम क्रोम में - getSelection()
को ऑनकीप के अंदर कॉल करना हमेशा एक नल चयन उत्पन्न करता है। क्या इसके चारों ओर एक रास्ता है?जेएस
<iframe>
<html>
<head>
<script>
function parse() {
if(window.getSelection().type != 'None') {
var range = window.getSelection().getRangeAt(0);
}
var text = document.body.textContent;
//Parse text, output is stored in newtext
document.body.innerHTML = newtext;
document.body.focus();
if(range) {
window.getSelection().removeAllRanges();
window.getSelection().addRange(range);
}
}
</script>
</head>
<body onload="document.designMode = 'on'; document.onkeyup = parse;">
Text entered appears here
</body>
</html>
</iframe>
कौन सा संपादक आप उपयोग कर रहे हैं? क्या यह एक मौजूदा है या आप में से एक है? –
क्या यह केवल गेको ब्राउज़र के लिए है? आपको फीचर परीक्षण होना चाहिए जितना आप हैं। * पवन * वस्तु 'addRange (wind.range)' से कहां से आती है? – RobG
यह एक संपादक है जिसे मैं क्रोम में लिख रहा हूं, हालांकि आदर्श रूप से सभी ब्राउज़रों (आईई को छोड़कर) के लिए। हवा के लिए, मेरी गलती - हवा को आईफ़्रेम के लिए विंडो ऑब्जेक्ट को पकड़ने के लिए उपयोग किया जाता था इससे पहले कि मुझे एहसास हुआ कि फ़्रेम के अंदर फ़ंक्शन को आसान बनाना आसान होगा। ऊपर से हटाया गया; यह वहां नहीं होना चाहिए था हालांकि यह त्रुटि नहीं थी। – Monchoman45