Browse Source

Fix some issues in IE11 #768

pull/983/head
Artur Arseniev 9 years ago
parent
commit
d27819c3eb
  1. 3
      src/block_manager/view/BlockView.js
  2. 8
      src/canvas/view/CanvasView.js
  3. 2
      src/rich_text_editor/model/RichTextEditor.js
  4. 8
      src/utils/Droppable.js

3
src/block_manager/view/BlockView.js

@ -40,7 +40,8 @@ module.exports = Backbone.View.extend({
// Note: data are not available on dragenter for security reason,
// but will use dragContent as I need it for the Sorter context
ev.dataTransfer.setData(type, data);
// IE11 supports only 'text' data type
ev.dataTransfer.setData('text', data);
this.em.set('dragContent', content);
},

8
src/canvas/view/CanvasView.js

@ -208,7 +208,13 @@ module.exports = Backbone.View.extend({
// property keymaster (and many others) still use it... using `defineProperty`
// hack seems the only way
const createCustomEvent = (e, cls) => {
var oEvent = new window[cls](e.type, e);
let oEvent;
try {
oEvent = new window[cls](e.type, e);
} catch (e) {
oEvent = document.createEvent(cls);
oEvent.initEvent(e.type, true, true);
}
oEvent.keyCodeVal = e.keyCode;
['keyCode', 'which'].forEach(prop => {
Object.defineProperty(oEvent, prop, {

2
src/rich_text_editor/model/RichTextEditor.js

@ -113,7 +113,7 @@ export default class RichTextEditor {
btn.className = btn.className.replace(active, '').trim();
// doc.queryCommandValue(name) != 'false'
if (doc.queryCommandState(name)) {
if (doc.queryCommandSupported(name) && doc.queryCommandState(name)) {
btn.className += ` ${active}`;
}

8
src/utils/Droppable.js

@ -3,7 +3,7 @@
*/
import { on } from 'utils/mixins';
import { bindAll } from 'underscore';
import { bindAll, indexOf } from 'underscore';
export default class Droppable {
constructor(em) {
@ -138,17 +138,17 @@ export default class Droppable {
}
} else if (dragContent) {
content = dragContent;
} else if (types.indexOf('text/html') >= 0) {
} else if (indexOf(types, 'text/html') >= 0) {
content = dataTransfer
.getData('text/html')
.replace(/<\/?meta[^>]*>/g, '');
} else if (types.indexOf('text/uri-list') >= 0) {
} else if (indexOf(types, 'text/uri-list') >= 0) {
content = {
type: 'link',
attributes: { href: content },
content: content
};
} else if (types.indexOf('text/json') >= 0) {
} else if (indexOf(types, 'text/json') >= 0) {
const json = dataTransfer.getData('text/json');
json && (content = JSON.parse(json));
}

Loading…
Cancel
Save