Как я могу удалить внедренный скрипт - PullRequest
0 голосов
/ 18 июня 2020

Я внедряю скрипт в свое приложение GWT

   ScriptInjector.fromUrl("js/jquery-1.7.2.min.js").setWindow(ScriptInjector.TOP_WINDOW).setCallback(new Callback<Void, Exception>()
        {

            @Override
            public void onSuccess(Void paramT)
            {
                ScriptInjector.fromUrl("js/viewer-2.2.1/WebViewer.min.js").setWindow(ScriptInjector.TOP_WINDOW).setCallback(new Callback<Void, Exception>()
                {

                    @Override
                    public void onSuccess(Void paramT)
                    {
                        ScriptInjector.fromString(getCreateInjection()).setWindow(ScriptInjector.TOP_WINDOW).setRemoveTag(false).inject();
                    }....

Теперь в приложении есть способ удалить этот скрипт, который я ввел ранее.

1 Ответ

2 голосов
/ 19 июня 2020

Короче говоря, из-за того, как работает JS, вы, вероятно, можете сделать то, что описываете, и удалить сам тег скрипта, но, вероятно, не сможете сделать то, что вы на самом деле имеете в виду - код был выполнен, вы не можете поместить зубная паста обратно в тюбик. Обычно можно удалить тег скрипта и, возможно, удастся удалить некоторые из созданных функций или типов, которые были созданы, но любой код, который уже запущен и взаимодействует с вашей страницей, будет оставаться там, пока не будет принято решение об этом.

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

-

Оба варианта fromUrl и fromString используют метод inject(), и оба метода возвращают JavaScriptObject. Этот объект является фактическим тегом <script> - вы можете преобразовать его в Element и вызвать на нем removeFromParent(), и тег скрипта исчезнет, ​​но побочные эффекты от включения скрипта все равно сохранятся.

Другие варианты включают в себя его собственный <iframe> и осторожный вызов с главной страницы, а затем удаление iframe - это всего лишь простой способ удалить все экспортированные функции, et c, но будет не отменять никаких других побочных эффектов. Чтобы понять, как это сделать, вам нужно полностью понимать, что делает сценарий - надеюсь, у них есть документация, описывающая, как вы можете достичь того, что вам нужно (или, возможно, вы можете уточнить свой вопрос дополнительно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...