Как получить доступ к тексту удаленно загруженного элемента "<script>"? - PullRequest
1 голос
/ 27 июня 2010

Ну, я сейчас пытаюсь написать приложение для чтения манги с поддержкой ajax для onemanga, используя greasemonkey (точнее js / jquery)

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

$.get(nextPage,function(nxtHtm) // the variable nextPage already contains required url
{
  nxtImgUrl = $(nxtHtm).find(".one-page img").attr("src");   // get next image url
  $("body").append("<img id='dynamic' src='"+nxtImgUrl+"'/>");  // append next image
  $(nxtHtm).find("script:last-1").appendTo("body"); // attempt to append script to body
  alert(nextPage); // testing if script to change page url has been executed
});

Hoverver, который, кажется, работает только на части изображения. скрипт не имеет никакого эффекта. я также пытался сделать оповещения ($ (nxtHtm) .find ( "сценарий: последний 1".) HTML ()); и варианты, такие как .text () или. Val () .html () ничего не возвращает (не «ноль», он просто сообщает пустое значение), а два других возвращают ноль или неопределенное значение

Кто-нибудь имеет представление о том, как я могу добавить сюда удаленный скрипт? или альтернативно захватить текст между тегами и просто eval () это?

спасибо ^^

Ответы [ 2 ]

0 голосов
/ 01 ноября 2012

JQuery будет игнорировать содержимое некоторых элементов (например, <head>), возможно, во имя исполнения.Я подозреваю, что <script> является одним из них.

Решение будет состоять в том, чтобы JQuery не мог анализировать DOM, пока у вас не будет возможности переопределить это поведение.стандартное поведение при разборе converters block

Заменить любые теги <script> на <div data-tag="script">, чтобы они не игнорировались Найдите text() соответствующего деления.

Попробуйте что-то вроде этого:

$.ajax(nextPage,{
    success: function( data, status, xhr ){
        data = data.replace(/\<script[^>]+\>/ig,"<div data-script='true'>")
        data = data.replace("</script>","</div>")
        var $data = $(data);
        nxtImgUrl = $data.find(".one-page img").attr("src");
        $("body").append("<img id='dynamic' src='"+nxtImgUrl+"'/>");
        $data.find("div[data-script=true]:last-1").text().appendTo("body");
        alert(nextPage);
    },
    converters:{
        "* text": window.String,
        "text html": true,
        "text xml": true
    },
    dataType:'html'
});

Возможно, вы столкнетесь с проблемами кодирования из-за недействительных сущностей, таких как &, и в этом случае вам может понадобиться подход на основе RegExp,что тоже возможно.Дайте мне знать, как вы поживаете.

0 голосов
/ 27 июня 2010

поиск jsonP или кометное программирование.

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