Index: typo3/sysext/rtehtmlarea/htmlarea/htmlarea.js
===================================================================
--- typo3/sysext/rtehtmlarea/htmlarea/htmlarea.js (révision 6416)
+++ typo3/sysext/rtehtmlarea/htmlarea/htmlarea.js (copie de travail)
@@ -204,6 +204,8 @@
HTMLArea.editorCSS = _editor_CSS;
// Initialize event cache
HTMLArea._eventCache = HTMLArea._eventCacheConstructor();
+ // Initialize pending request flag
+ HTMLArea.pendingSynchronousXMLHttpRequest = false;
// Set troubleshooting mode
HTMLArea._debugMode = false;
if (typeof(_editor_debug_mode) != "undefined") HTMLArea._debugMode = _editor_debug_mode;
@@ -1806,7 +1808,12 @@
editor.focusEditor();
if(keyEvent) {
- if(editor._hasPluginWithOnKeyPressHandler) {
+ // In Opera, inhibit key events while synchronous XMLHttpRequest is being processed
+ if (HTMLArea.is_opera && HTMLArea.pendingSynchronousXMLHttpRequest) {
+ HTMLArea._stopEvent(ev);
+ return false;
+ }
+ if (editor._hasPluginWithOnKeyPressHandler) {
for (var pluginId in editor.plugins) {
if (editor.plugins.hasOwnProperty(pluginId)) {
var pluginInstance = editor.plugins[pluginId].instance;
@@ -2443,6 +2450,7 @@
req.open('POST', postUrl, asynchronous);
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
if (!asynchronous) {
+ HTMLArea.pendingSynchronousXMLHttpRequest = true;
sendRequest();
if (req.status == 200) {
if (typeof(handler) == "function") {
@@ -2452,6 +2460,7 @@
} else {
HTMLArea._appendToLog("ERROR [HTMLArea::_postback]: Unable to post " + postUrl + " . Server reported " + req.statusText);
}
+ HTMLArea.pendingSynchronousXMLHttpRequest = false;
} else {
window.setTimeout(sendRequest, 500);
}