#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-объявление?