TwitterWidget в SilverStripe

#javascript #jquery #twitter #document.write #silverstripe

#javascript #jquery #Twitter #document.write #silverstripe

Вопрос:

Я пытаюсь интегрировать TwitterWidget в SilverStripe.

Это плагин, который я пытаюсь использовать:https://twitter.com/about/resources/widgets/widget_profile

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

Я загрузил исходный код, чтобы выяснить, где возникает ошибка. Через несколько часов я обнаружил кое-что довольно запутанное:

Это фрагмент кода, в котором возникает ошибка:

document.write('<div class="twtr-widget" id="' this.id '"></div>')

FireBug:

uncaught exception: [Exception... "An attempt was made to use an object that is not, or is no longer, usable" code: "11" nsresult: "0x8053000b (NS_ERROR_DOM_INVALID_STATE_ERR)" location: "http://www.domain.com/mysite/javascript/widget.js?m=1321187964 Line: 257"]
LeftAn...8532904 (Zeile 883)
function() {return new ActiveXObject('Microsoft.XMLHTTP')},

После нескольких обновлений иногда появляются сообщения FireBug:

An attempt was made to use an object that is not, or is no longer, usable
[Bei diesem Fehler anhalten] document.write('<div class="twtr-widget" id="' this.id '"></div>')

Отладчик JavaScript в Google Chrome:

 Uncaught TypeError: Object #<Document> has no method 'write'  //widget.js:257
TWTR.Widget.init                                              //widget.js:257
TWTR.Widget                                                   //widget.js:211
(anonymous function)                                          //?stage=Stageamp;flush=1:117
f.extend._Deferred.e.resolveWith                              //jquery-1.6.4.min.js:2
e.extend.ready                                                //jquery-1.6.4.min.js:2
c.addEventListener.C                                          //jquery-1.6.4.min.js:2
  

Ответ №1:

Это немного неполно для отладки, но почему бы не использовать один из легко доступных виджетов? Нравится http://www.silverstripe.org/twitter-widget-pack-widget

Комментарии:

1. Большое спасибо ! 🙂 Я думаю, что пока я буду использовать его. Но все же я хотел бы знать, почему этот плагин не работает. Можете ли вы сказать, каких фрагментов информации не хватает для ее отладки?

2. Какая версия SilverStripe, какие-либо другие модули / настройки, …? В идеале вы могли бы предоставить ссылку на (нерабочую) страницу. Я бы заподозрил какое-то столкновение JS. Вы могли бы попробовать поэкспериментировать в вашем Page_Controller с Requirements::block(THIRDPARTY_DIR . '/jquery/jquery.js'); и т.д. — но это только предположение.

3. Прежде всего, спасибо за помощь. Я пробовал несколько вариантов импорта Javascript с помощью SilverStripe. Я использую SS 2.4.5. Однако я принял ответ слишком рано. К сожалению, виджет тоже не работает. Но я выяснил, в чем причина проблемы. Это была одна строка. На самом деле первый, в котором указана кодировка XML: <?xml version="1.0" encoding="UTF-8"?> Кто-нибудь может сказать мне, что я должен использовать, поскольку я не хочу просто удалять это.

4. Хорошо, немного информации о XML-объявлении (на немецком языке, но, судя по вашему первому сообщению, это должно быть нормально): de.selfhtml.org/html/xhtml/unterschiede.htm#xml_deklaration Но я бы настоятельно рекомендовал перейти на HTML5. SilverStripe поддерживает его (или не зависит от него), это будущее, и вам не нужно бороться с объявлением XML. Работает ли это с HTML5 ( w3schools.com/html5/tag_doctype.asp например)?

5. Извините за поздний ответ. Прямо под объявлением XML было объявление HTML4.0.1. С ним все работает нормально. Означает ли это, что я действительно могу исключить XML-объявление?