what is a "ReferenceError" and how to fix it? - javascript

I'm getting the following error in my notify.js :
Uncaught ReferenceError: Notify is not defined
here is the code in my js
function onPermissionGranted() {
doNotification("Notification Allowed", "You will now receive notifications once your checking is complete.")
}
function onPermissionDenied() {
console.warn("Permission has been denied by the user")
}
function doNotification(t, e) {
new Notify(t,{
body: e
}).show()
}
window.onbeforeunload = function() {
if ("" != $("#live").val() || "" != $("#cclist").val())
return "You're about to leave this page. Are you done saving your live results?"
}
,
Notify.needsPermission && Notify.requestPermission(onPermissionGranted, onPermissionDenied);
var timer, list, tlist, tw = 191, stop = !0, ct = 0, akey = "10001|BB21C00153BEEE1A0419ED806D47E63E9054CA1CAA0DEF2DBC4FEB9365992243F33707C0EEC6B3643EB77D41D6BF48F2F015C83CCAE6CC7D1C54D3ECEAC45E00A443AFFD8E2642EAB3A68BCE0841E7FB3EC257D51BBA3A35FD378D551E5F08BDB55F9CDBCF7F363E1857D85B0B62760294FFC8395ECEC42C9BC3EDC71E06FA7D188C594F1D17D4392308F1123CAA89DF1099EF729DA723654FBEFCD9884885DD3EEED42E97C462788D685587518FB62883AF0739594D67C42F77466A276D34AD1461FA60DCB0A5A2AFC9A02F4E800CA9DB2AC5C010697CF0F0479E9710F849A052E949DC9082E7A67E43A9BF722354AB3616F1C4ECACD616950CCED7702C5A17";
when I run the page I got the console error.

Your Notify class is most likely in a different file that is not referred in the file where you get this error.
The error
Uncaught ReferenceError: [ref] is not defined
is an error telling you your code has a reference that cannot be understood by the JavaScript interpreter and that it can't... well... interpret it. [ref] is the name of the reference triggering the error. It can be an unknown class, an undefined variable or an undefined function. Check for typos and make sure the class is both declared and included.
Also, make sure that the imported JavaScript file of your class is imported before the script using it :
<script src="path/notify.js" type="text/javascript" />
<script src="path/usingnotify.js" type="text/javascript" />
would work, whereas
<script src="path/usingnotify.js" type="text/javascript" />
<script src="path/notify.js" type="text/javascript" />
would not.

Related

Uncaught TypeError: Cannot read properties of undefined (reading 'get') at HTMLInputElement.geocodio

I am having issues trying to run an API using Geocodio. This is set up through WordPress and I would really appreciate any help I can get!
Everything works up until the actual API itself has to run. The Geocodio documentation states that it runs "using a jQuery AJAX call". I have tried multiple script sources that claim to fix the problem, but I get the error that "superfish() is not a function" or that "Cannot read properties of undefined (reading 'get')".
<head>
<script src="jQuery.js"></script>
<script src="superfish.js"></script>
<script>
jQuery(document).ready(function() {
jQuery('ul.sf-menu').superfish();
});
</script>
</head>
<body>
<input type="text" id="myTxt" style="width: 400px;" placeholder="Type Your Address Here!"></input>
<input type="submit" id="myBtn" value="Search Now!"></input>
<script>
var submit = document.getElementById("myBtn")
var myInput = document.getElementById("myTxt")
submit.addEventListener("click", geocodio)
function geocodio() {
if(myInput.value.length == 0) {
alert("Please input a valid address")
}
else {
$.get('https://api.geocod.io/v1.7/geocode?q='+ encodeURIComponent(myInput)
+'&api_key=' + encodeURIComponent('YOUR_API_KEY'), function (response) {
console.log(response.results)});
}
};
</script>
</body>
You must be using some strange version of jQuery that forces you to refer to it as jQuery and not $. Odd, I thought all versions of jQuery also set up the $ global.
Try replacing $ with jQuery inside geocodio():
function geocodio() {
if (myInput.value.length == 0) {
alert("Please input a valid address")
}
else {
jQuery.get('https://api.geocod.io/v1.7/geocode?q=' + encodeURIComponent(myInput.value)
+ '&api_key=' + encodeURIComponent('YOUR_API_KEY'), function (response) {
console.log(response.results);
});
}
}
(also fixed: encode myInput.value instead of encoding whole input)
If that doesn't work, perhaps jQuery.js failed to load. Check the console messages and/or network trace tab in the developer tools.
If that doesn't work, try stepping thru the code using the JavaScript debugger built in to your browser (short tutorial video).

Uncaught Error: getSessionData requires two non-null arguments JavaScript

I am loading JavaScript file in Webview in android device. While loading file, I am not getting content on webview, it just shows empty and in logs getting error
[chromium] [INFO:CONSOLE(2)] "Uncaught Error: getSessionData requires two non-null arguments (domain, keys).", source: https://service.force.com/embeddedservice/5.0/frame/session.esw.min.js (2)
[chromium] [INFO:CONSOLE(5)] "No domain set!", source: https://service.force.com/embeddedservice/5.0/eswFrame.min.js (5)
The thread 0x1d has exited with code 0 (0x0).
Thread finished: <Thread Pool> #29
Thread finished: <Thread Pool> #7
The thread 0x7 has exited with code 0 (0x0).
Thread finished: <Thread Pool> #31
The thread 0x1f has exited with code 0 (0x0).
[Choreographer] Skipped 1299 frames! The application may be doing too much work on its main thread.
[chromium] [INFO:CONSOLE(1)] "Uncaught ReferenceError: initESW is not defined", source: https://service.force.com/embeddedservice/5.0/esw.html (1)
ulr in above error, is not the exact url being reguested, below is the correct ulr
https://service.force.com/embeddedservice/5.0/esw.min.js
Below file I am using
<html>
<body>
<button onclick="Chat1()">Submit</button>
<script type='text/javascript' src='https://service.force.com/embeddedservice/5.0/esw.min.js'></script>
<script type='text/javascript'>
function Chat1() {
var initESW = function (gslbBaseURL) {
embedded_svc.settings.displayHelpButton = true; //Or false
embedded_svc.settings.language = ''; //For example, enter 'en' or 'en-US'
embedded_svc.settings.enabledFeatures = ['LiveAgent'];
embedded_svc.settings.entryFeature = 'LiveAgent';
embedded_svc.init(
'https://ulr.my.salesforce.com',
'https://ulr.force.com/visualforce',
gslbBaseURL,
'00D7a00000055uj',
'Products',
{
'baseLiveAgentContentURL': 'https://c.la3-c1cs-cdg.salesforceliveagent.com/content',
'deploymentId': '720008Oqg',
'buttonId': '5730PID',
'baseLiveAgentURL': 'https://d.la3-c1cs-cdg.salesforceliveagent.com/chat',
'eswLiveAgentDevName': 'EmbeddedServiceLiveAgent_Parent0000000jLUAQ_17d9a605e8e',
'isOfflineSupportEnabled': false
}
);
};
if (!window.embedded_svc) {
var s = document.createElement('script');
var jsUlr1 = 'https://ulr.salesforce.com/embeddedservice/5.0/esw.min.js/'
console.log("Control here2")
s.src = jsUlr1;
s.onload = function () {
initESW(null);
}
document.body.appendChild(s);
}
else {
initESW('https://service.force.com');
}
}
</script>
</body>
</html>
You can get more information from here regarding what I am doing. In this link ulr not being used, using local file.
I want to know how to fix getSessionData requires two non-null arguments ? this is really painful error 😨.
This error we can see on this url
https://service.force.com/embeddedservice/5.0/frame/session.esw.min.js
Salesforce attempts to parse the URL of your webview in order to extract a domain.
The domain is then passed to multiple function calls, including getSessionData.
You can open the non-minified https://service.force.com/embeddedservice/5.0/eswFrame.js file and notice this block:
window.location.search.replace(/([a-zA-Z0-9]+)=([\S]+)/g, function(match, key, value) {
if(key === "parent") {
// Only take the parts between the first instance of // and the / following it.
this.parentOrigin = value;
}
}.bind(this));
This function is unable to parse a domain from a local file loaded with file:///, which is what you do when you load the webview. Thus the errors.
The solution is to host a local server within your app or to store your webview script on a remote server so Salesforce can properly parse the domain from the webview url.
For instance, loading the following script using a http://localhost URL displays the chat agent properly on Chrome desktop:
<html>
<body>
<script type='text/javascript' src='https://service.force.com/embeddedservice/5.0/esw.min.js'></script>
<script type='text/javascript'>
var initESW = function (gslbBaseURL) {
embedded_svc.settings.displayHelpButton = true; //Or false
embedded_svc.settings.language = 'en'; //For example, enter 'en' or 'en-US'
embedded_svc.settings.enabledFeatures = ['LiveAgent'];
embedded_svc.settings.entryFeature = 'LiveAgent';
embedded_svc.init(
'https://ulr.my.salesforce.com',
'https://ulr.force.com/visualforce',
gslbBaseURL,
'00D7a00000055uj',
'Products',
{
'baseLiveAgentContentURL': 'https://c.la3-c1cs-cdg.salesforceliveagent.com/content',
'deploymentId': '720008Oqg',
'buttonId': '5730PID',
'baseLiveAgentURL': 'https://d.la3-c1cs-cdg.salesforceliveagent.com/chat',
'eswLiveAgentDevName': 'EmbeddedServiceLiveAgent_Parent0000000jLUAQ_17d9a605e8e',
'isOfflineSupportEnabled': false
}
);
}
initESW('https://service.force.com');
</script>
</body>
</html>
getSessionData requires two non-null arguments, meaning your getSessionData(a,b) function is getting null value for a or b or both of them.
Why is it getting null, there's something wrong in one of the previous functions which calls getSessionsData() function or you are actually running this function with null data in parameter.

Getting error when trying to return value using dropzone

hi i want to recover id use dropzone but it gives me error Uncaught SyntaxError: Unexpected token '.' i don't know why.
var id = $("#id").html();
Dropzone.options.dropzone = function(){console.log(id)};
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.4.0/min/dropzone.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.4.0/dropzone.js"></script>
<h3 class="jumbotron" id="id">241</h3>
I don't the package but you have a syntax error here.
If Dropzone.options.dropzone suppose to be an object you should pass it with a set of key and values like this:
Dropzone.options.dropzone =
{
key: "value";
}
Or if it supposes to get a function do it like this:
Dropzone.options.dropzone = function(){console.log(id)};
Does one of these solutions solves your problem?

Uncaught TypeError: Cannot read property 'charAt' of undefined

code3.js:8 Uncaught TypeError: Cannot read property 'charAt' of undefined at espaces_debut (code3.js:8) at onload (Ex4.htm:11)
In Ex4.htm :
<html>
<head>
<title>Ex4</title>
<script language="javascript" src="code3.js">
ch=prompt ("ch ") ;
alert (espaces_debut(ch));
</script>
</head>
<body onload="espaces_debut()">
</body>
</html>
IN code3.js :
function espaces_debut(ch)
{
i=-1;
do
{
i=i+1
}
while (ch.charAt(i)=' ') ;
return ( ch.substr(0,i-1) ) ;
}
I get this Error , help pls
You try to call function escapes_debut on onload without parameter. ch is undefined and has no charAt method.
Remove onload attribute from body.
EDIT: due to comment below:
You don't need this function, where are more errors. Use just .trim() function.
ch.prompt('ch');
alert(ch.trim());
Note that prompt has two optional parameters. The first one isn't value, but label. Value is the second one, if is set.

0x800a138f - JavaScript runtime error: Unable to get property 'fn' of undefined or null reference

I am trying to do this example http://jsfiddle.net/pmrotule/w7aakdbb/54/
There I am getting this exception
0x800a138f - JavaScript runtime error: Unable to get property 'fn' of undefined or null reference.
and
0x800a01b6 - JavaScript runtime error: Object doesn't support property or method 'multiselect' .
It is throwing error at this point in bootstarp-multiselect.js
$.fn.multiselect = function(option, parameter, extraOptions) {
return this.each(function() {
var data = $(this).data('multiselect');
var options = typeof option === 'object' && option;
// Initialize the multiselect.
if (!data) {
data = new Multiselect(this, options);
$(this).data('multiselect', data);
}
// Call multiselect method.
if (typeof option === 'string') {
data[option](parameter, extraOptions);
if (option === 'destroy') {
$(this).data('multiselect', false);
}
}
});
};
My HTML code:
<script src="~/Scripts/bootstrap-multiselect.js"></script>
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<link href="~/Content/bootstrap-multiselect.css" rel="stylesheet" />
<script src="~/Scripts/bootstrap.js"></script>
<select id="ddlCars" multiple="multiple">
<option value="Accord">Accord</option>
<option value="Duster">Duster</option>
<option value="Esteem">Esteem</option>
<option value="Fiero">Fiero</option>
</select>
<script>
$('#ddlCars').multiselect();
</script>
I am using ASP.NET MVC project in VS2013.
There I am getting this exception
I am very new to JS and BootStarp.
Correct the order of scripts, jQuery js should be the first to load because bootstrap.js and bootstrap-multiselect.js depends on jquery js.
<link href="~/Content/bootstrap-multiselect.css" rel="stylesheet" />
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/bootstrap.js"></script>
<script src="~/Scripts/bootstrap-multiselect.js"></script>
What the error says is that $ is not yet defined (during execution of bootstarp-multiselect.js), because you need to load jQuery first.
And since bootstrap-multiselect.js can depend on bootstrap, it doesn't harm to also load bootstrap.js before bootstrap-multiselect.js.
So:
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/bootstrap.js"></script>
<script src="~/Scripts/bootstrap-multiselect.js"></script>
...
order of javascript file inclusion is wrong, jQuery file should be included first.

Categories