Запуск Javascript на динамической <div>нагрузке - PullRequest
0 голосов
/ 20 января 2011

Я работаю над добавлением уведомлений о заголовке страницы для установки AJAXchat.Я использую плагин jQuery под названием jquery-titlealerts для достижения этой цели.Если я назначу метод для события onclick, он будет работать правильно и изменит заголовок страницы.Но это не работает так, как мне нужно.Мне нужно, чтобы изменить заголовок страницы каждый раз, когда создается новый div.Вот js, который динамически создает новый div каждый раз, когда кто-то отправляет сообщение:

return '<div id="'
+ this.getMessageDocumentID(messageID)
+ '" class="'
+ rowClass
+ '">'
+ this.getDeletionLink(messageID, userID, userRole, channelID)
+ dateTime
+ '<span class="'
+ userClass
+ '"'
+ this.getChatListUserNameTitle(userID, userName, userRole, ip)
+ ' dir="'
+ this.baseDirection
+ '" onclick="$.titleAlert(\'Error!\');">'
+ userName
+ '</span>'
+ colon
+ this.replaceText(messageText)
+ '</div><script>$.titleAlert(\'Error!\');</script>';
return

Как вы можете видеть, я пытался создать блок <script> для загрузки чуть ниже div - и это делаетно по какой-то причине не меняет название документа.Если вы нажмете на сообщение, сгенерированное в чате, оно будет работать, потому что оно запускается из события onclick. Я не уверен, что еще можно попытаться заставить его работать, когда каждый div загружен.

Ответы [ 2 ]

2 голосов
/ 20 января 2011

В том месте, где вы вызываете функцию с оператором return, после вызова этой функции вы должны обновить заголовок страницы. Если вы не хотите делать это таким образом, у вас может быть функция return, в которой ваш новый контент Div обновляет заголовок страницы непосредственно перед его возвратом.

В качестве альтернативы рассмотрите возможность использования метода jQuery $.ajax() с обратным вызовом complete (или success) для изменения заголовка. Честно говоря, это был бы мой предпочтительный подход, если бы мне нужно было решить эту проблему.

Вы можете прочитать все о $.ajax() здесь .

1 голос
/ 20 января 2011

Вставка блока скрипта программным способом почти никогда не работает в современных браузерах по очевидным причинам безопасности.

Вместо этого заставьте скрипт, который получает этот HTML, делать оповещения, возможно, основываясь на части содержимого HTML;скажем, скрытый промежуток, содержащий сообщение для извлечения и использования в качестве заголовка.

...