How to include external script into <script>? - javascript

Inside my JS function I need to add this:
< script src=https://xxxx.com/c3.js type="text/javascript" async defer>< /script>
How to edit the code the right way?
<script>
function affilate() {
var ab_instance = "xxx.com";
var ab_kampan = 3;
var ab_cena = 1;
var ab_id_transakce = document.getElementById("email").value;
<script src=https://xxxx.com/c3.js type="text/javascript" async defer></script>
console.log(ab_id_transakce);
}
</script>

If I understand your question correctly, you are trying to add a script tag to the DOM. It seems that you are trying to add the HTML script tag in the Javascript function, which will not work. What you can try is:
Add the script tag directly in the HTML like this:
<script src=https://xxxx.com/c3.js type="text/javascript" async defer></script>
<script>
function affilate() {
var ab_instance = "xxx.com";
var ab_kampan = 3;
var ab_cena = 1;
var ab_id_transakce = document.getElementById("email").value;
console.log(ab_id_transakce);
}
</script>
Add the script tag dynamically
<script>
function affilate() {
var ab_instance = "xxx.com";
var ab_kampan = 3;
var ab_cena = 1;
var ab_id_transakce = document.getElementById("email").value;
console.log(ab_id_transakce);
var script_tag = document.createElement("script");
script_tag.src = "https://xxxx.com/c3.js";
script_tag.type = "text/javascript";
script_tag.async = true;
script_tag.defer = true;
// in case you want to add the script tag to the <head>
document.head.appendChild(script_tag);
// in case you want to add the script tag to the <body>
document.body.appendChild(script_tag);
}
</script>

Related

Use local storage value in script src

How can I have my Local Storage value inside the SRC value of a script tag?
I have this:
<script id="gmap" async defer src="https://maps.googleapis.com/maps/api/js?callback=initMap&key=">
And I get the local value:
var gkey = localStorage.getItem('LSGMD-GoogleMapsAPIKey');
The local value is set and when showing it via an alert it shows up correctly. But now how can I use this local value in the script. It should become:
<script id="gmap" async defer src="https://maps.googleapis.com/maps/api/js?callback=initMap&key=LOCALVALUE">
EDIT ONE: This is what I tried but while it does change the SRC it won't show the map.
<script>
(function ($) {
$(document).ready(function() {
var gkey = localStorage.getItem('LSGMD-GoogleMapsAPIKey');
var glink = "https://maps.googleapis.com/maps/api/js?callback=initMap&key=";
var gscript = glink + gkey;
$("#gmap").attr("src",gscript);
});
})(jQuery);
</script>
How could I add a var to this part &key=VARHERE">?
I think one solution would be to create that script element dynamically
<script>
var script = document.createElement('script');
script.onload = function () {
var ipServer = location.host;
};
var gkey = localStorage.getItem('LSGMD-GoogleMapsAPIKey');
script.setAttribute( 'src', 'https://maps.googleapis.com/maps/api/js?callback=initMap&key=' + gkey);
document.head.appendChild(script);
</script>
You can retrieve that value from local storage and dynamically append a script tag to the document.
<script>
var gkey = localStorage.getItem('LSGMD-GoogleMapsAPIKey');
var scriptTag = document.createElement('script');
scriptTag.src = 'https://......' + '?queryparams....&key=' + gkey;
document.head.appendChild(scriptTag);
</script>

How to define some variables and load a javascript from a source when form is submitted

When I submit a form in JSP I want to call a method which defines some variables and then runs a JavaScript file from a source like below and finally submits the form. How can I achieve it? these variables must be defined before the Javascript xyz.js(from source) gets executed.
Thanks
< script type = "text/javascript" >
var required_variable1 = 'abcd';
var required_variable2 = 12;
var required_variable3 = true;
var required_variable4 = false;
</script>
<script type = "text/javascript" src = "https://example.com/xyz.js" ></script>
UPDATE:
I know about the onsubmit(). I tried to do like this but its complaining about inserting this script inside the script. What is the correct syntax/way to do it?
<script type="text/javascript" src="https://example.com/xyz.js"/>
< script type = "text/javascript" >
$('#acceptanceForm').submit(function() {
var required_variable1 = 'abcd';
var required_variable2 = 12;
var required_variable3 = true;
var required_variable4 = false;
<script type="text/javascript" src="https://example.com/xyz.js"/>
});
</script>

Placing Amazon Banner | Angular V4

I'm placing an Amazon banner inside an angular material 2 card.But the problem is that it is not rendering.It shows empty div.What could be the reason.Below is the code showing how I did it.
<md-card class="full-width full-height border-box ">
<div class="adv">
<script type="text/javascript" language="javascript">
var aax_size = '728x90';
var aax_pubname = 'XXXXXXXXXXX';
var aax_src = '302';
</script>
<script type="text/javascript" language="javascript" src="http://c.amazon-adsystem.com/aax2/assoc.js"></script>
</div>
</md-card>
I also tried to to bind it using property binding
<span [innerHTML]="advertisement()"></span>
advertisement(){
return `<div class="adv">
<script type="text/javascript" language="javascript">
var aax_size = '728x90';
var aax_pubname = 'XXXXXXXXXXX';
var aax_src = '302';
</script>
<script type="text/javascript" language="javascript" src="http://c.amazon-adsystem.com/aax2/assoc.js"></script>
</div>`;
}
I also tried to dynamically add the div inside my card,it shows inside the div but the banner doesn't appear.Below is the code showing how I did that.
ngAfterViewInit() {
let x: HTMLElement = document.getElementById('adv');
let s: HTMLScriptElement = document.createElement('script');
s.type = 'text/javascript';
// s.language = 'javascript';
let code = `var aax_size = '728x90';
var aax_pubname = 'XXXXXXX';
var aax_src = '302';`;
let src = document.createElement('script');
src.type = 'text/javascript';
// src.language = 'javascript';
src.src = 'http://c.amazon-adsystem.com/aax2/assoc.js';
try {
s.appendChild(document.createTextNode(code));
x.appendChild(s);
x.appendChild(src);
} catch (e) {
s.text = code;
document.body.appendChild(s);
}
console.log(x);
}
After scrapping every post in SO regarding or similar to this question I did not find any solution to this.I followed almost everything in those posts but nothing was working for me.After that I came across postscribe library which does the externally loading of any third party script.
First I installed the library and imported it in my component
import * as postscribe from 'postscribe';
After that all I did was calling a function inside my ngAfterViewInit function, by targetting the div with its id which in my case was adv and passed the script as a second parameter to this function.
ngAfterViewInit() {
postscribe('#adv', `<script type="text/javascript" language="javascript">
var aax_size='728x90';
var aax_pubname = 'XXXXXXXX';
var aax_src='302';
</script>
<script type="text/javascript" language="javascript" src="http://c.amazon-adsystem.com/aax2/assoc.js"></script>`);}
By doing this my banner was loaded.

Random generator within script tag

Hello I need help in assigning a random number to the src file in a script tag. I have read all the posts I could find, but not making any head way.
so here is what i am trying to do. In the code below, the file referenced by the src tag is myjsfile.1234.js.
What i want to is randomly generate the "1234" every time the page is loaded.
<script data-cfasync="false" id = "myid" src="https://www.example.com/myjsfile.1234.js" type="text/javascript"> </script>
For example I have tried this without success
<script>
var randomnos = Math.ceil(Math.random() * 1000000000);
var mysource = "https://www.example.com/myjsfile."+randomnos+".js";
</script>
<script data-cfasync="false" id = "myid" src=mysource type="text/javascript"></script>
So will appreciate any help I can get
Another way: using Jquery you can use $.getScript()
var randomnos = Math.ceil(Math.random() * 1000000000);
var mysource = "https://www.example.com/myjsfile."+randomnos+".js";
window.onload = function() {
$.getScript(mysource,function(){console.log('loaded')})
}
You need to create script element programatically and append it to html page:
var randomnos = Math.ceil(Math.random() * 1000000000);
var mysource = "https://www.example.com/myjsfile."+randomnos+".js";
window.onload = function() {
var script = document.createElement('script');
script.src = mysource;
document.head.appendChild(script);
}

insert dynamically string containing script into HTML and executing it dynamically

I have a variable of the form :
var x = '<script type="text/javascript" language="javascript"> ..lots of stuff...</script>
<script type="text/javascript" language="javascript"> ..even more of stuff...</script>'
and I want to insert it with jquery into my HTML code and execute it.
I tried using the append, html and eval without any luck.
Any ideas?
sample script:
<script type="text/javascript" language="javascript">
var clk = 'http://......';
</script>
<script type="text/javascript" language="javascript" src="http://...."></script>
<noscript>
<img src="http://..." width="120" height="600" border="0" alt="">
</noscript>
this will in the end show an img, which will load asynchronously.
Usually having </script> tags nested within other <script></script> tags will break things. You'll need to split them up like in the Javascript below to not cause browser issues.
Here is a working fiddle:
https://jsfiddle.net/2vrfxrse/
Javascript
var jsCode = '<scr' + 'ipt>var executeTest = function(){ alert("This is a test."); }</scr' + 'ipt>';
$('head').append(jsCode);
HTML
<script>executeTest();</script>
This solution will probably work for your specific scenario:
var rx = new RegExp("<script .*?>(.*?)<\/script>", 'g');
var x = '<script type="text/javascript" language="javascript">alert("..lots of stuff...");</script><script type="text/javascript" language="javascript">alert("..even more of stuff...");</script>';
var res = rx.exec(x);
while (res) {
var s = document.createElement("script");
s.appendChild(document.createTextNode(res[1]));
document.body.appendChild(s);
res = rx.exec(x);
}
JSBin: http://jsbin.com/menocumiya/edit?html,js,console,output
You can use Jquery getScript:
//Moment example
if (typeof moment == "undefined") {
var url = "~/assets/js/moment.js";
$.getScript(url);
}
Or Jquery Function:
$(function(){
var test = "this.Foo = function() {alert('hi');}";
var F=new Function (test);
(new F()).Foo(); //Shows "Hi" alert
});
$(function(){
var test = "this.Foo = function() {alert('hi');}";
var F=new Function (test);
(new F()).Foo(); //Shows "Hi" alert
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

Categories