diff --git a/src/plugins/qmljseditor/qmlfilewizard.cpp b/src/plugins/qmljseditor/qmlfilewizard.cpp
index a35236ab52941edbeca450cda1505ab22f1e993f..4bf4cc3321b511bbc461d2fc588080433511c774 100644
--- a/src/plugins/qmljseditor/qmlfilewizard.cpp
+++ b/src/plugins/qmljseditor/qmlfilewizard.cpp
@@ -46,7 +46,7 @@ Core::GeneratedFiles QmlFileWizard::generateFilesFromPath(const QString &path,
                                                           QString * /*errorMessage*/) const
 
 {
-    const QString mimeType = QLatin1String(Constants::QMLJSEDITOR_MIMETYPE);
+    const QString mimeType = QLatin1String(Constants::QML_MIMETYPE);
     const QString fileName = Core::BaseFileWizard::buildFileName(path, name, preferredSuffix(mimeType));
 
     Core::GeneratedFile file(fileName);
diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp
index 37736abf70ae71f38ecd8844304f3b0e0bb0ea3d..7af2fffbc8dbdbea652b53aabdf4d28a40c9c855 100644
--- a/src/plugins/qmljseditor/qmljseditor.cpp
+++ b/src/plugins/qmljseditor/qmljseditor.cpp
@@ -46,8 +46,9 @@
 #include <qmljs/qmldocument.h>
 #include <qmljs/qmlidcollector.h>
 
-#include <coreplugin/icore.h>
 #include <coreplugin/actionmanager/actionmanager.h>
+#include <coreplugin/icore.h>
+#include <coreplugin/mimedatabase.h>
 #include <coreplugin/uniqueidmanager.h>
 #include <extensionsystem/pluginmanager.h>
 #include <texteditor/basetextdocument.h>
@@ -59,6 +60,7 @@
 #include <utils/changeset.h>
 #include <utils/uncommentselection.h>
 
+#include <QtCore/QFileInfo>
 #include <QtCore/QTimer>
 
 #include <QtGui/QMenu>
@@ -317,7 +319,6 @@ QmlJSTextEditor::QmlJSTextEditor(QWidget *parent) :
     setMarksVisible(true);
     setCodeFoldingSupported(true);
     setCodeFoldingVisible(true);
-    setMimeType(QmlJSEditor::Constants::QMLJSEDITOR_MIMETYPE);
 
     m_updateDocumentTimer = new QTimer(this);
     m_updateDocumentTimer->setInterval(UPDATE_DOCUMENT_DEFAULT_INTERVAL);
@@ -363,6 +364,13 @@ QString QmlJSEditorEditable::id() const
     return QLatin1String(QmlJSEditor::Constants::C_QMLJSEDITOR_ID);
 }
 
+bool QmlJSEditorEditable::open(const QString &fileName)
+{
+    bool b = TextEditor::BaseTextEditorEditable::open(fileName);
+    editor()->setMimeType(Core::ICore::instance()->mimeDatabase()->findByFile(QFileInfo(fileName)).type());
+    return b;
+}
+
 QmlJSTextEditor::Context QmlJSEditorEditable::context() const
 {
     return m_context;
diff --git a/src/plugins/qmljseditor/qmljseditor.h b/src/plugins/qmljseditor/qmljseditor.h
index c3541a975f3654c3711320cc798f947016c166d2..a99826834ce3377b29141a481887c7f4e4b26dfb 100644
--- a/src/plugins/qmljseditor/qmljseditor.h
+++ b/src/plugins/qmljseditor/qmljseditor.h
@@ -68,6 +68,7 @@ public:
     Core::IEditor *duplicate(QWidget *parent);
     QString id() const;
     bool isTemporary() const { return false; }
+    virtual bool open(const QString & fileName);
 
 private:
     QList<int> m_context;
diff --git a/src/plugins/qmljseditor/qmljseditorconstants.h b/src/plugins/qmljseditor/qmljseditorconstants.h
index df82492d165ce4531410fbe71ef4b61e1a424da4..7996a6c9f96e4a546ffdc59dc7b4cbf012b9adab 100644
--- a/src/plugins/qmljseditor/qmljseditorconstants.h
+++ b/src/plugins/qmljseditor/qmljseditorconstants.h
@@ -41,7 +41,8 @@ const char * const C_QMLJSEDITOR_ID = "QMLProjectManager.QMLJSEditor";
 const char * const C_QMLJSEDITOR_DISPLAY_NAME = QT_TRANSLATE_NOOP("OpenWith::Editors", "QMLJS Editor");
 const char * const TASK_INDEX = "QmlJSEditor.TaskIndex";
 
-const char * const QMLJSEDITOR_MIMETYPE = "application/x-qml";
+const char * const QML_MIMETYPE = "application/x-qml";
+const char * const JS_MIMETYPE = "application/javascript";
 
 } // namespace Constants
 } // namespace QmlJSEditor
diff --git a/src/plugins/qmljseditor/qmljseditorfactory.cpp b/src/plugins/qmljseditor/qmljseditorfactory.cpp
index 56654e5d2411892fb58d8596d766e9bbcede57f6..bcb27f872732e9419abc93c70d294a178c825fa6 100644
--- a/src/plugins/qmljseditor/qmljseditorfactory.cpp
+++ b/src/plugins/qmljseditor/qmljseditorfactory.cpp
@@ -42,9 +42,12 @@ using namespace QmlJSEditor::Internal;
 using namespace QmlJSEditor::Constants;
 
 QmlJSEditorFactory::QmlJSEditorFactory(QObject *parent)
-  : Core::IEditorFactory(parent),
-    m_mimeTypes(QLatin1String(QmlJSEditor::Constants::QMLJSEDITOR_MIMETYPE))
+  : Core::IEditorFactory(parent)
 {
+    m_mimeTypes
+            << QLatin1String(QmlJSEditor::Constants::QML_MIMETYPE)
+            << QLatin1String(QmlJSEditor::Constants::JS_MIMETYPE)
+            ;
 }
 
 QmlJSEditorFactory::~QmlJSEditorFactory()
diff --git a/src/plugins/qmljseditor/qmljseditorfactory.h b/src/plugins/qmljseditor/qmljseditorfactory.h
index 4c3158bd07356350684f51d11f22119e9fe9e6dd..3af7fe1e226536f2f596f2fdc3d0a695a6bc9d45 100644
--- a/src/plugins/qmljseditor/qmljseditorfactory.h
+++ b/src/plugins/qmljseditor/qmljseditorfactory.h
@@ -59,7 +59,7 @@ public:
     Core::IEditor *createEditor(QWidget *parent);
 
 private:
-    const QStringList m_mimeTypes;
+    QStringList m_mimeTypes;
 };
 
 } // namespace Internal