943,918 Members | Top Members by Rank

Ad:
Jun 11th, 2009
0

dynamic content does not fire javascript.

Expand Post »
Hi I am working on a little project I'd like to call post database and I got a little problem. when user clicks a page number, I bring html content from server and add it to page. And I can see the new content on the page. But if new html content has some java script it does not run.
you can see the example on
postdatabase.appspot.com
go to tutorials page, and click page 3 . new page will come. including following alert inside
JavaScript / DHTML / AJAX Syntax (Toggle Plain Text)
  1. alert('asdf');
But it show alert window. Somehow browser does not fire javascripts.
Here is my guess: it does not work because you can not use javascript to shape pages after page load.(I just made that up. but there is no other logical explanation I can come up with.)
Similar Threads
Reputation Points: 31
Solved Threads: 5
Light Poster
yilmazhuseyin is offline Offline
48 posts
since Oct 2006
Jun 11th, 2009
0

Re: dynamic content does not fire javascript.

Hi, you have to add an Id to the script

JavaScript / DHTML / AJAX Syntax (Toggle Plain Text)
  1. <script type="text/javascript" id="evalMe">
  2. alert('asdf');
  3. pdbinit(23001);
  4. </script>
and when the dynamic content is load you have to find the script getElementById('evalMe') and apply eval.

:-)
Reputation Points: 10
Solved Threads: 1
Newbie Poster
jodin is offline Offline
4 posts
since Jun 2009
Jun 12th, 2009
0

Re: dynamic content does not fire javascript.

First of all thank you for quick response.

Let me tell you what I am trying to do.in this project. I go to settings page and create a new wall. then in my page (in this case tutorial page 3). than I call pdbinit function. which writes two div elements with document.write() and then fill inside divs with the data it gets from server. now here is the problem. if I use eval ,I wont be able to use document.write because My text will already be converted to elements and added to htmldom. so what I need is to use document.write in the text of innerhtml.

I simplified the question here is the code.

HTML Syntax (Toggle Plain Text)
  1. <html>
  2. <head>
  3. <script type="text/javascript">
  4. function inject(targetDiv){
  5. var content = '<b>This is the text before script</b> <script type="text/javascript">document.write("<br>This part is written via script")</script';
  6. content +='>';//I am adding this here to broke </script!> tag
  7. targetDiv.innerHTML = content;}
  8. </script>
  9. </head>
  10. <body>
  11. <div id="myDiv"></div><br>
  12. <input type="button" value="inject HTML" onclick="inject(document.getElementById('myDiv'))"/>
  13. <input type="button" value="Call Document.write after page load" onclick="document.write('Calling document.write after page load')"/>
  14. </body>
  15. </html>

Here I have a button when I click it , I inject an html (including some script) into the page. but script does not run. how can I run this. I also added a button to run document.write. if you press it it will run document.write. which will overwrite the content of the page. this has to be called by browser only when browser convert text to htmldom elements. (I am just guessing right now.)
Reputation Points: 31
Solved Threads: 5
Light Poster
yilmazhuseyin is offline Offline
48 posts
since Oct 2006
Jun 12th, 2009
0

Re: dynamic content does not fire javascript.

Try this one:

JavaScript / DHTML / AJAX Syntax (Toggle Plain Text)
  1. <html>
  2. <head>
  3. <script type="text/javascript">
  4. <!--
  5.  
  6. var inject = function( targetDiv ) {
  7. targetDiv.innerHTML = "";
  8.  
  9. var content = "<b>This is the text before script</b>\n";
  10. var script = document.createElement("script");
  11. script.type = "text/javascript";
  12. script.id = "script1";
  13. script.innerText = "function injectFunc() { document.write( '<br>This part is written via dynamic injected script!' ); }";
  14. targetDiv.appendChild( script );
  15. targetDiv.innerHTML += content;
  16. };
  17. //-->
  18. </script>
  19. </head>
  20. <body>
  21. <div id="myDiv"></div><br>
  22. <input type="button" value="inject HTML" onclick="inject(document.getElementById('myDiv'))"/>
  23. <input type="button" value="Call Dynamic Function" onclick="injectFunc();" />
  24. </body>
  25. </html>
Featured Poster
Reputation Points: 114
Solved Threads: 138
Posting Shark
essential is offline Offline
973 posts
since Aug 2008
Jun 12th, 2009
0

Re: dynamic content does not fire javascript.

actualy that did not work either.I tried it on windows (ff , ie , chrome). It worked as same as before. and there is another problem. innerText of new script element looks empty from firebug. I suspect that innerText property is read only.
Reputation Points: 31
Solved Threads: 5
Light Poster
yilmazhuseyin is offline Offline
48 posts
since Oct 2006

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in JavaScript / DHTML / AJAX Forum Timeline: Change the magnification level of a div with contents inside it
Next Thread in JavaScript / DHTML / AJAX Forum Timeline: What is the difference between these





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC