1

Как преобразовать этот скрипт, который использует debrecadted E4X?Преобразование сценария greasemonkey после E4x не поддерживается

Flickr Functional Suite.

Я не программист, но если вы объясните мне, где мне нужно начинать, я делаю все возможное.

В первой, кажется, не проблема CDATA ...

Вот ссылка, в Buggzilla, где я описать мою проблему: Firefox 17 breaks a Greasemonkey script that relies on E4X (New : Firefox 21 delete totally its support)

я получить здесь первый Indice где e4x находится в использовать (поиск в коде "ricCB"):

requestImageComments: function(id) { 
    if (!id) return; 
    var tkey = 'getComments'; 
    // Set up ticket status queue if needed 
    if (!this.ticketStatus[tkey]) this.ticketStatus[tkey] = new Object(); 
    return this.flickrApi 
    ({ method: 'flickr.photos.comments.getList', photo_id: id }, 
     'ricCB', {ticktype: tkey}); 
}, 
ricCB: function(rsp) { 
    var hash = this.objects.comments; 
    for each (comments in rsp.comments) { 
     // for (var cs = 0; cs < rsp.comments.length; cs++) { 
     // var comments = rsp.comments[cs]; 
     var pid = [email protected]_id; 
     for each (com in comments.comment) { 
      var uname = [email protected]; 
      var nsid = [email protected]; 
      this.setTranslation({ uname: uname, nsid: nsid }); 
      // var create = new Date([email protected]); 
      var ctxt = com + ''; 
      // Strip out HTML tags: 
      ctxt = ctxt.replace(/(\<|\&lt\;).+?(\>|\&gt\;)/g,''); 
      // Collapse all whitespace runs to single spaces: 
      ctxt = ctxt.replace(/[\s\n\r\t]+/g, ' '); 
      // Store data under both authorname and photo ID (hash 
      // will collide only if someone is using a pure 
      // integer as a name AND a photo has same integer). 
      var info = { txt: ctxt, uname: uname, photo: pid }; 
      if (!hash[uname]) hash[uname] = new Array(); 
      if (!hash[pid]) hash[pid] = new Array(); 
      hash[uname].push(info); 
      hash[pid].push(info); 
     } 
    } 

Первоначально опубликованы здесь: My Greasemonkey script stopped working after something updated

+0

Этот сценарий не кажется использовать любой E4X. Вероятно, это не проблема. Однако, сценарий 7 лет! С тех пор Flickr, скорее всего, сильно изменился. Переписывание этого сценария для вас не является тем, чем [так]; прочитайте [faq] идеи о том, как переписать этот вопрос. (Подсказка: точные сообщения об ошибках, код, который демонстрирует проблему, и то, что вы пробовали.) –

+0

Я думаю, что это E4X: в «Ошибка 814633 - Firefox 17 разбивает сценарий Greasemonkey, который полагается на E4X (New: Firefox 21 полностью удаляет его поддержку) «Борис Збарский написал: Строка 558 пользовательского скрипта: var pid = comments. @ Photo_id; , который определенно выглядит как e4x-ism для меня. Есть еще несколько строк. Просто выполните поиск функции, называемой «ricCB», в http: // userscripts.org/scripts/review/5016 И я не хочу, чтобы вы переписывали код, но вы просто объясняете, как это сделать ... – decembre

+0

Хорошо, при ближайшем рассмотрении он использует E4X. Но это еще не правильный вопрос. Фиксация этого сценария требует, как минимум, рефакторинга функции parseXML и всех других функций, которые используют его вывод. Вам нужно разбить его на биты, которые могут помочь кому-то с той же проблемой. Этот вопрос нуждается в SSCCE. Прочитайте [faq] и отредактируйте свой вопрос, иначе он будет проигнорирован и закрыт. –

ответ

1

Если есть зависимость от e4x, попробуйте в том числе реализации JavaScript:

В качестве альтернативы, вот другие вопросы, отображение обложки e4x синтаксис XPath или XML в JSON:

Кроме того, вы можете продолжать использовать e4x путем доступа к данным через YQL:

Список литературы

+0

Спасибо за ваш ответ. Но я пытаюсь сделать сценарий greasemonkey для реализации javascript и протестировать его с помощью последнего firefox: ничего не меняется ... Идея? – decembre

+0

В реализации JavaScript используется XMLSerializer, который является [небезопасным] (http://www.greasespot.net/2005/12/workarounds-for-missing-xmlhttprequest.html) в Greasemonkey. В качестве обходного пути скопируйте и вставьте код в свой скрипт, а затем замените 'XMLSerializer'' unsafeWindow.XMLSerializer', чтобы получить доступ к этому API через целевую страницу. Имейте в виду, что скрипты на целевой странице могут следовать за использованием 'unsafeWindow' обратно на ссылку сценария Greasemonkey и, таким образом, получить [повышенные привилегии] (http://wiki.greasespot.net/UnsafeWindow). –

+0

Я пробую теперь с вашим обходным путем, заменив весь экземпляр XMLSerializer на unsafeWindow.XMLSerializer (см. В pastebin): JAVASCRIPT LIbrary for E4X - Greasemonkey script. кажется, не очень хорошо ... Может быть, потому, что неправильный формат моего GM? Можете ли вы окунуться в нее? – decembre

 Смежные вопросы

  • Нет связанных вопросов^_^