Существует ли способ “заменить код JavaScript в горячем режиме” в браузере?

Из Wiki page : «Что нового в TypeScript [1.6]»:

Новое расширение файла .tsx и as

В TypeScript 1.6 вводится новое расширение файла .tsx. Это расширение делает две вещи: он позволяет JSX внутри файлов TypeScript и делает новый оператор as способом по умолчанию (удаление любой неопределенности между выражениями JSX и оператором листинга префикса TypeScript). Например:

var x =  foo; 
// is equivalent to:
var x = foo as any;
blockquote>

16
задан kolrie 17 October 2008 в 23:47
поделиться

4 ответа

Интересная идея :)

я записал следующий bookmarklet:

function reload(){var scripts=document.getElementsByTagName("script");var head=document.getElementsByTagName("head")[0];var newScripts=[];var removeScripts=[];for(var i=0;i<scripts.length;i++){var parent=scripts[i].parentNode;if(parent==head&&scripts[i].src){var newScript={};newScript.src=scripts[i].src;newScript.innerHTML=scripts[i].innerHTML;newScripts.push(newScript);removeScripts.push(scripts[i]);}}for(var i=0;i<removeScripts.length;i++){head.removeChild(removeScripts[i]);}for(var i=0;i<newScripts.length;i++){var script=document.createElement("script");script.src=newScripts[i].src;script.type="text/javascript";script.innerHTML=newScripts[i].innerHTML;head.appendChild(script);}}

добавляют, что к местоположению новой закладки, и это перезагрузит весь javascripts, на который ссылаются в < head>. не уверенный, как хорошо это будет работать на практике, но это стоило того, чтобы попытаться :) Я предполагаю, что необходимо было бы быть очень осторожными в способе, которым Вы пишете свои сценарии, чтобы не добавить вещи к телу страницы многократно, и т.д. Возможно, поддерживать для 'перезагрузки =, "истинный"' атрибут мог быть полезным, тот способ, которым Вы могли отметить только свои библиотеки как перезагружаемые.

Полный источник:

function reload() {
    var scripts = document.getElementsByTagName("script");
    var head = document.getElementsByTagName("head")[0];
    var newScripts = [];
    var removeScripts = [];
    for(var i=0; i < scripts.length; i++) {
        var parent = scripts[i].parentNode;
        if(parent == head && scripts[i].src) {
            var newScript = {};
            newScript.src = scripts[i].src;
            newScript.innerHTML = scripts[i].innerHTML;
            newScripts.push(newScript);
            removeScripts.push(scripts[i]);
        }
    }

    for(var i=0; i < removeScripts.length; i++) {
        head.removeChild(removeScripts[i]);
    }

    for(var i=0; i < newScripts.length; i++) {
        var script = document.createElement("script");
        script.src = newScripts[i].src;
        script.type = "text/javascript";
        script.innerHTML = newScripts[i].innerHTML;
        head.appendChild(script);
    }
}
4
ответ дан 30 November 2019 в 23:14
поделиться

im, уверенный не, слишком много людей здесь знают то, что Вы подразумеваете под заменой в горячем режиме, но поскольку virtuosiMedia сказал, что mootools признает, что, если Вы не доверяете mootools так очень затем, существует тот же плагин для jQuery и все еще если Вы не хотите платформы, Вы могли бы всегда добавлять те сценарии через dom

, но я уверен, что Нельзя изменить главные сценарии уровня, которые Вы уже определили, поскольку любые сценарии, динамично добавленные через DOM, являются только уровнем

тела
1
ответ дан 30 November 2019 в 23:14
поделиться

Я не знаком с HotSport, но если Вы говорите о динамичной загрузке JavaScript, да, можно сделать это. MooTools позволяет Вам делать это, также, как и jQuery, Прототип , Dojo, и YUI, и я уверен, что большинство других платформ делает также. Можно также сделать это с собственный JavaScript.

1
ответ дан 30 November 2019 в 23:14
поделиться

Если Вы хотите сделать это с цельный файлы JavaScript, см. этот вопрос для чего-то достаточно подобного, что необходимо смочь получить основы идеи.

0
ответ дан 30 November 2019 в 23:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: