საიტის გასაუმჯობესებელი სამუშაოების მიმდინარეობისას, შესაძლებლობების ნაწილი შეიზღუდება. თუ სტატიით ვერ მოახერხებ ხარვეზის გამოსწორება და შეკითხვის დასმა გსურთ, ჩვენი მხარდაჭერის გუნდი დაგეხმარებათ @FirefoxSupport გვერდის მეშვეობით Twitter-ზე და /r/firefox განყოფილებაში Reddit-ზე.

ძიება მხარდაჭერაში

ნუ გაებმებით თაღლითების მახეში მხარდაჭერის საიტზე. აქ არასდროს მოგთხოვენ სატელეფონო ნომერზე დარეკვას, შეტყობინების გამოგზავნას ან პირადი მონაცემების გაზიარებას. გთხოვთ, გვაცნობოთ რამე საეჭვოს შემჩნევისას „დარღვევაზე მოხსენების“ მეშვეობით.

ვრცლად

Changing the src attribute for the script tag dynamically doesn't work as of Firefox 4.0

  • 6 პასუხი
  • 2 მომხმარებელი წააწყდა მსგავს სიძნელეს
  • 10 ნახვა
  • ბოლოს გამოეხმაურა WD_2012

Hello guys,

changing the src attribute for the script tag dynamically by the use of JavaScript was working in Firefox 3.. and ist still working in IE, but it is not working in the new versions of Firefox anymore.

Following example shows the problem:

test.html

html
  head
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
 <script type="text/javascript" src="fcts.js"></script>
 <script type="text/javascript" id="myscriptObject"></script>
  /head
  body
     <script> change_src() </script>
     <script> test() </script>
  /body
/html


fcts.js

function change_src(){

document.getElementById("myscriptObject").src = "fcts2.js";

}


fcts2.js

function test(){

alert("Hello");

}


The error console says: 'ReferenceError: test is not defined'

I have also tried to create the script element dynamically:

function change_src(){

 var script = document.createElement("script");
 script.type = "text/javascript";
 script.src = "fcts2.js";
 document.getElementsByTagName("head")[0].appendChild(script);

}

The result has been the same.

Thanks in advance for your help.

Hello guys, changing the src attribute for the script tag dynamically by the use of JavaScript was working in Firefox 3.. and ist still working in IE, but it is not working in the new versions of Firefox anymore. Following example shows the problem: '''test.html''' html head <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <script type="text/javascript" src="fcts.js"></script> <script type="text/javascript" id="myscriptObject"></script> /head body <script> change_src() </script> <script> test() </script> /body /html '''fcts.js''' function change_src(){ document.getElementById("myscriptObject").src = "fcts2.js"; } '''fcts2.js''' function test(){ alert("Hello"); } The error console says: 'ReferenceError: test is not defined' I have also tried to create the script element dynamically: function change_src(){ var script = document.createElement("script"); script.type = "text/javascript"; script.src = "fcts2.js"; document.getElementsByTagName("head")[0].appendChild(script); } The result has been the same. Thanks in advance for your help.

ჩასწორების თარიღი: , ავტორი: WD_2012

ყველა პასუხი (6)

Can you gain any insight from Firefox's error console (Ctrl+Shift+j)?

Try using a full URL when you set src and see whether that helps.

It is usually better to either remove and reinsert the tag or replace the tag instead of modifying the source attribute.
I need do that manually in the DOM Inspector if I want to check embedded JavaScript on web pages that aren't working properly in Firefox. CSS changes work, but JavaScript changes are cached and can't be changed that way.

Hello guys,

thanks for your replies.

Using the full URL doesn't help.

The Firefox's error console shows only one message: 'ReferenceError: test is not defined'.

Replacing the whole node has the same effect as changing the src property. In both cases the script object is shown with the new src value by the DOM Inspector. It seems like the src value is changed but the new file (fcts2.js) is not imported.

Furthermore I have found that the function test() is executed if I add a call of the alert function directly after changing the src value:


fcts.js

function change_src(){

document.getElementById("myscriptObject").src = "fcts2.js";

alert("OK");

}


Doing so, I get two dialogs - the first one is showing 'OK' and the second one is showing 'Hello'.

Any ideas?

ჩასწორების თარიღი: , ავტორი: WD_2012

Does it work if you make the src change via a setTimeout() to make sure that the DOM has been finalized?

Unfortunately, it doesn't help. I have also tried to set a timeout for the call of the function test(), but the result has been the same.

May it be a bug in Firefox?