Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.04.2015, 17:59
Кандидат Javascript-наук
Отправить личное сообщение для soltx Посмотреть профиль Найти все сообщения от soltx
 
Регистрация: 19.05.2013
Сообщений: 144

прослушка на обновление контента
Как установить прослушку на обновление контента и возможно ли это?
как пример: всё происходит при помощи ajax, в момент события click.
можно ли узнать, как то иначе не используя событие click?

Последний раз редактировалось soltx, 18.04.2015 в 19:04.
Ответить с цитированием
  #2 (permalink)  
Старый 18.04.2015, 21:00
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

MutationObserver
Ответить с цитированием
  #3 (permalink)  
Старый 19.04.2015, 01:52
Новичок на форуме
Посмотреть профиль Найти все сообщения от simply_the_Best
 
Регистрация: 18.04.2015
Сообщений: 4

возможная реализация
<html>
<head>
</head>
<body>

<div id="content_">start</div>

<script>


Publisher={
 create: function(name, event){
  var o=Object.create(this)
  event.onEvent=function(){o.notyfy()}
  o.event=event
  o.subscribers=[]
  window[name]=o
},
 subscribe: function(subscriber, action){
  this.subscribers.push(subscriber)
  subscriber["on"+this.event.name]=action
},
 unsubscribe: function(subscriber){
   delete subscriber["on"+this.event.name]
   this.subscribers=this.subscribers.filter(function(s){return s!=subscriber})
},
 notyfy: function(){
   var name=this.event.name
   this.subscribers.forEach(function(s){s["on"+name]()})}
}

Event={
 onEvent: function(){},
 create: function(name, event){
  var o=Object.create(this)
  o.self=event
  o.name=name
  window[name]=o
},
 activate: function(arg){this.self(arg); this.onEvent()}
}


/////// EXAMPLE ///////

Div={
 create: function(name, text){
   var o=Object.create(this)
   o.self=document.createElement("div")
   o.self.innerHTML=text
   document.body.appendChild(o.self)
   window[name]=o
 }
}

send=function(){
 var xhr=new XMLHttpRequest
 xhr.open("GET", "http://localhost:8888") 
 xhr.onreadystatechange=function(){
  if(xhr.readyState == 4) if(xhr.status==200) {rewriteContent.activate(xhr.responseText)}
 }
 xhr.send(null)
}

Div.create("fooDiv", "foo<br>")
Div.create("barDiv", "bar<br>")
Div.create("bazDiv", "baz<br>")

Event.create("rewriteContent", function(text){content_.innerHTML=text})
Publisher.create("rewriteContentListener", rewriteContent)

;(function(onrewriteContent){
 with(rewriteContentListener){
  subscribe(fooDiv, onrewriteContent)
  subscribe(barDiv, onrewriteContent)
  subscribe(bazDiv, onrewriteContent)
 }
}
)
(function(){this.self.innerHTML+="response has received<br>"})

send()
send()

setTimeout(function(){rewriteContentListener.unsubscribe(fooDiv)}, 1000)
setTimeout(send, 3000)



</script>

</body>
</html>


////// OUT: ///////////

//response text from server
//foo
//response has received
//response has received
//bar
//response has received
//response has received
//response has received
//baz
//response has received
//response has received
//response has received
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с таймерами после обновления контента paulsk Элементы интерфейса 3 03.04.2015 14:24
Обновление контента без обновления страницы Braindy AJAX и COMET 5 02.12.2013 19:37
обновление контента по событию skill jQuery 3 06.03.2012 10:34
Обновление страницы AndreyS AJAX и COMET 6 16.05.2011 15:55
Загрузка контента без перезагрузки страницы vah-smile AJAX и COMET 3 30.03.2011 16:37