Как удалить тег HTML-скрипта с открытым типом [duplicate]

Вызов ChannelExec.setCommand несколько раз не имеет эффекта.

И даже если бы это было, я бы предположил, что 192.168.50.1 : и Config.txt не являются командами, но вводятся в copy run tftp : команда

Если это так, вам нужно записать их на ввод команды.

Что-то вроде этого:

ChannelExec channel = (ChannelExec) session.openChannel("exec");
channelExec.setCommand("copy run tftp : ");
OutputStream out = channelExec.getOutputStream();
channelExec.connect();
out.write(("192.168.50.1 : \n").getBytes());
out.write(("Config.txt \n").getBytes());
out.flush();
9
задан John 5 July 2012 в 12:54
поделиться

2 ответа

Удаление элемента скрипта ничего не делает. Если вы каким-то образом можете получить доступ к элементу скрипта, он был выполнен давно, и его удаление не будет иметь никакого эффекта.

Поэтому нам нужно обойти это. Если ваш элемент сценария находится в верхней части страницы:

<head>
    <script src="yourscript.js"></script>

Вы можете сделать синхронный запрос ajax на одну и ту же страницу, чтобы вы могли анализировать его содержимое в новый документ, изменять весь скрипт теги, а затем заменить текущий документ на измененный документ.

var xhr = new XMLHttpRequest,
    content,
    doc,
    scripts;

xhr.open( "GET", document.URL, false );
xhr.send(null);
content = xhr.responseText;

doc = document.implementation.createHTMLDocument(""+(document.title || ""));

doc.open();
doc.write(content);
doc.close();


scripts = doc.getElementsByTagName("script");
//Modify scripts as you please
[].forEach.call( scripts, function( script ) {
    script.removeAttribute("src");
    script.innerHTML = 'alert("hello world");';
});

//Doing this will activate all the modified scripts and the "old page" will be gone as the document is replaced
document.replaceChild( document.importNode(doc.documentElement, true), document.documentElement);

К сожалению, это невозможно установить в jsfiddle или jsbin. Но вы должны иметь возможность скопировать этот код точно так же, как на консоль этой страницы в google chrome. Вы должны увидеть предупреждения, и когда вы проверите живое dom, каждый скрипт был изменен.

Разница заключается в том, что мы запускаем это после того, как скрипты были выполнены на странице, поэтому старые сценарии все равно должны иметь рабочий эффект на странице. Вот почему для этого вам нужно быть первым скриптом на странице, чтобы сделать это.

Протестировано для работы в google chrome. По какой-то причине Firefox полностью игнорирует вызов doc.write.

11
ответ дан Esailija 20 August 2018 в 18:17
поделиться

я не знаю, что вы пытаетесь сделать. Но лучше загружать их по запросу, а не удалять на некоторых условиях.

$.getScript('helloworld.js', function() {
     $("#content").html('
          Javascript is loaded successful! 
     ');
  });

Если вы хотите удалить скрипты перед выполнением, это невозможно. Но то, что вы можете сделать, это удалить скрипт программно при условии & amp; если есть проблема с утечками памяти, тогда вы можете вызвать код ниже, чем удалить скрипт.

var var1 = 'hello';
var cleanAll = function () {
    delete window.var1;
    delete window.cleanAll;
};

// unload all resources
cleanAll();
-3
ответ дан MicroEyes 20 August 2018 в 18:17
поделиться
Другие вопросы по тегам:

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