Javascript для доступа к текстовым полям комментариев Disqus? - PullRequest
0 голосов
/ 22 декабря 2010

Я работаю над расширением браузера, которое должно позволять мне получать доступ к комментариям / сообщениям внутри текстовых полей.Многие сайты сейчас используют Disqus для комментариев, но я не могу найти способ доступа к окну комментариев Disqus (Disqus API тоже мало что говорит) по мере ввода текста.

Кто-нибудь знает способ получить к нему доступ?

1 Ответ

2 голосов
/ 24 декабря 2010

Лучший способ понять это - начать анализировать, как Disqus API использует свою систему комментариев.На данный момент вашим лучшим другом является Инспектор (Инструменты разработчика), который поставляется с Google Chrome.

Когда вы проанализируете DOM (щелкните правой кнопкой мыши и найдите текстовую область комментария), вы заметите, что это iframe.Следует помнить, что запрос к домену Discus является перекрестным источником для получения информации для этого плагина комментария.Вы можете увидеть, что, посмотрев на тег, он имеет ссылку, которая указывает на domain.disqus.com, где домен - это веб-сайт, на который вы просматриваете.

Например, когда вы посещаете TechCrunch, iframe будет указывать наhttp://techcrunch.disqus.com, который внедряет поле комментария.

Вы можете использовать Content-Scripts , чтобы читать и манипулировать этими внедренными страницами, потому что Content-Scripts может также внедряться в IFrames через всеframes manifest name.!

Например, для настройки Content-Script вам потребуется часть content_scripts в файле манифеста:

"content_scripts": [
  {
    "matches": ["http://*/*"],
    "js": ["cs.js"],
    "run_at": "document_end",
    "all_frames": true
  }

Затем, внутриваш cs.js (файл сценария контента), вы найдете поле для комментариев при поиске по данному iframe.

// We just need to check if the IFrame origin is from discus.com
if (location.hostname.indexOf('.disqus.com') != -1) {
  // Extract the textarea (there must be exactly one)
  var commentBox = document.querySelector('#comment');
  if (commentBox) {
    // Inject some text!
    commentBox.innerText = 'Google Chrome Injected!';
  }
}

В конце вы увидите замечательные слова «Google Chrome Injected!»

Надеюсь, это даст вам толчок для создания потрясающих расширений Chrome :) Приведенный выше код работает, поскольку я тестировал его локально.

...