I wrote a little bookmarklet that works great in firefox, trying to use it in Chrome and not having any luck. Just tried out a stub bookmarklet javascript:alert('wtf'); which works fine in Firefox but not at all in Chrome. Trying to pick apart a couple of my pre-installed Chrome Bookmarklets and can't figure out why they run and mine don't. Having a lot of trouble finding documentation on this, thought I'd ask:
The javascript that I use is pretty much identical between Firefox and Chrome, the javascript: command for the bookmarklet is identical between my firefox bookmarklets and pre-installed chrome bookmarklets, so is there something else going on here?
Here's the actual bookmarklet (not just the stub)
javascript:function(){myscript=document.createElement('SCRIPT');myscript.type='text/javascript';myscript.src='http://applegator.net/script.js';document.getElementsByTagName('head')[0].appendChild(myscript);}
Some strange formatting things happened to it when it landed in chrome, still trying to sort it out, but think its basically right.
Am pretty new to Chrome so maybe this is something to do with them, just can't figure it out.
Thanks,
I just added your bookmarklet successfully in Chrome. However, I discovered that bookmarklets will not run on certain important pages like the New Tab page or anything else that starts with chrome://.
Perhaaps your choice of test page is your issue?
You have to put a space after the javascript: alert('like so');
if you want to do anything more complex, use a closure:
javascript: a=function(){alert('poop');alert('morepoop');}();
the (); is a shortcut for self-invocation of the closure
Related
long time lurker, first time poster.
The basics are this:
Inspired by this blog post, I'm attempting to create a bookmarklet for our QA team to quickly populate a form.
The bookmarklet works perfectly on my machine (TM) in Chrome, IE 10, and IE 9 compatibility mode. I've tested the bookmarklet on the QA team's machines, and while it works fine on their Chrome browsers and on IE 9, the bookmarklet doesn't work on the two machines running IE 11.
Details:
Of the two machines running IE 11, one is on Win 7, the other is on Win 8.1. The machine running IE 11 on Win 7 is updated to IE version 11.0.9600.17207IS, and will also run the bookmarklet correctly in Chrome.
I've attempted a couple different variations, the first based on the CSS-Tricks blog post mentioned above.
<a href="javascript:
(function(d) {
var body = d.getElementsByTagName('body').item(0);
var script = d.createElement('script');
script.src = 'https://company.siteurl.com/unrelated/DisclosureRegister.js';
body.appendChild(script);
}(window.document));
alert('Bookmarklet js fired!');">Disclosure Register Bookmarklet</a>
The second, based on a StackOverflow Response, is as follows:
<a href="javascript:
(function(){
var s=document.createElement('script');
s.type='text/javascript';
s.src='https://company.siteurl.com/unrelated/DisclosureRegister.js';
document.getElementsByTagName('head')[0].appendChild(s);
}());">Disclosure Register 2</a>
Both codes work on my machine in the previously mentioned browsers, neither work in IE 11 on the other machines (I don't have IE 11, can't test it directly on my machine).
I get no error message in console in the developer tools, and the DisclosureRegister.js file isn't listed in the developer tools' file list. It appears that the bookmarklet simply isn't firing.
Neither one of those bookmarklets have a Web Documents tab when I right click > properties, however, a simple javascript alert bookmarklet I provided them with does have the Web Documents tab, and it works perfectly in all browsers (including IE 11).
Click me!
I'm delivering the bookmarklets by writing the html in Codepen, emailing them a direct link to the Codepen (I don't have enough reputation points to post the link), and having them drag the link from the Codepen output to their browser favorites bar.
I came across something that gave me hope it was a bug with an older version of IE 11, but the IE version being used is even newer than the version that fixed the related bug.
Just in case there's something in the DisclosureRegister.js file that's causing IE 11 to abort the javascript, I'm including the code for that as well:
(function (win, doc, $, undefined) {
//Don't run if jQuery isn't loaded
if (typeof window.jQuery === 'undefined') {
return;
}
alert("Script is being called!");
}(window, window.document, window.jQuery));
The question:
While I'm certainly not ruling out an error with my code (and of course, please correct me if it's wrong), is there anything peculiar with IE 11 in the way it handles javascript bookmarklets that I need to account for in the code?
Thanks in advance for your time!
I wrote that article. Really glad you guys are finding it useful.
It seems there a bunch of people complaining about bookmarklets not working properly in IE11. One thing I'd test is how IE11 handles same origin policy. Check out this link, and see if you can temporarily disable same origin policy. Then test.
Obviously it won't solve the problem, but it could lead you in the right direction.
Hope that helps a bit. Let me know.
I think I found what is the problem with bookmarklets in IE11. I just added a bookmarklet in IE11 and it wasn't working so I started googling and found this page. Then I found bookmarklets at Microsoft's own website where they actually recommend to use it and it works. Then I decided to check if the syntax is correct and this where I found a problem. For some reason IE cuts part of long bookmarklets when it adds it to the toolbar by draggin-dropping. My bookmarklet that I was tried to add was several brackets short of original and because of that the syntax was incorrect. I then copy-pasted full code manually and it started working.
I was able to resolve the same problem by removing all line breaks from the bookmarklet code. IE 11 apparently doesn't know how to handle them.
With line breaks in the bookmarklet code, after adding it to "Favorites" the properties showed a blank URL and nothing would happen when clicking it.
With the linebreaks removed (ran a regex to collapse all whitespace to a single space character), after adding it to the "Favorites" the properties show the correct javascript in the URL field and it runs correctly when clicked.
I wasn't able to find anything anywhere documenting this limitation.
So, I'm trying to run on random websites, to play with the javascript psuedo-protocol.
javascript:alert("testtesttest");
And it never works. I've tried 6 websites, and I have no clue what I'm doing wrong. I've tried googling with little success. I'm using the latest version of firefox, and I have javascript enabled.
Firefox disabled it for security reasons, because people were pasting things they were told to in the address bar.
but it still works, if you trigger it from your javascript code.
And in chrome code, I found many cases, a window is initialized with this kind of protocol.
For example if you visit http://www.w3schools.com/jsref/met_win_settimeout.asp
There will be some inside windows to be opened with
javascript:"<html><body%20style='background:transparent'></body></html>"
then later on, the location.href changed to
http://www.w3schools.com/jsref/met_win_settimeout.asp
Any one knows why this kind of change happens, and why it is allowed?
Does it suggest for layer window, the location of the window can be changed to the main page?
I feel like I'm going crazy but alert() and console.log() refuses to work anywhere on Firefox 26.
At first I thought it was my own website's problem, but I cannot for the life of me to get it to work via javascript: urls, Firebug, I even tried it in jsfiddle.net by just putting alert('test'); in the script panel.
Tried uninstalling and installing again, no luck.
The only extension I'm running is Firebug.
Heck, Stackoverflow didn't even prompt me about leaving when I accidentally clicked the back button while writing this.
Also yes, I made sure there was some content inside the alert() and console.log()
What I mean by not working is that Firefox treats the code as if it were non-existent, nothing happens.
Once again, here's my environment:
Browser: Firefox 26.0
OS: Windows 8.1 Pro
Issue: alert(), console.log(), and apparently prompt() doesn't work
If anyone might know why this is happening, I would highly appreciate an answer.
UPDATE
Following Pointy's comment, it appears that both alert() and console.log() work as expected on the New Tab Page, but nowhere else
You might want to try re-installing Firebug:
console.log in firefox is not working?
PS:
I happen to be running a similar configuration (including FF 26) ... and things work fine for me. IMHO...
PPS:
You might also try setting "about:config, prompts.tab_modal.enabled = false":
https://bugzilla.mozilla.org/show_bug.cgi?id=613752
The default is "true", my FF 26 is set "true" and things are working for me ... but who knows. If reinstalling Firebug doesn't help, maybe it's worth a shot?
Silly but, in firebug can you check if window.alert and window.console are defined.... and if yes then, can you check if window.alert('hi') works ?
Thanks for all the help guys, in the end I used Revo Uninstaller to completely and absolutely wipe Firefox from my system, then installed it again. Seems to be working now, the original uninstaller most likely didn't remove whatever was causing the problem.
I have same bug when i using Ghostery extension. Disable Ghostery and reload page. Lets check at https://getfirebug.com/tests/head/console/api/log.html
I had a similar issue, on IE v11.0.10 and Chrome Canary v38.0.2114. Duplicate function name turnout to be the issue. Worth doing a quick check for function names in Javascript file.
You can use the Firefox console with CTRL + SHIFT + K
Related: https://support.mozilla.org/en-US/questions/876916
I have a SharePoint website with menus and everything.
I want to know what JavaScript function is called when I click an item.
How to know that? Is there any tool to trace javascript functions called? I use IE
Thanks a lot
I know this may not be the best help as you are not a chrome/firefox user. However, if you do chose to switch over, the Google Chrome browser has a script checker built in, which catches everything that you want to console.log().
This is simular with Firefox, however, firefox you have to download the addon "fire-bug" which can do the same, but it does not come pre-installed.
IE has an inbuilt 'program' called developer tools, which could be what you want, however I believe this came in through the later stages of IE such as IE 8+ (don't quote me on that)
You can use debugbar to inspect HTML element and also find what JavaScript function is called, then you can use Microsoft debugger, to put a breakpoint into the function and debug.
Yesterday I added a line of JavaScript that uses confirm(), and I was using FireFox 3.6.3 and it was working fine, but today FireFox upgrades to 3.6.4 in the background and the confirm() freezes my browser, although it still works in IE. I suspect it is a FireFox 3.6.4 issue.
I was wondering if that was indeed a FireFox 3.6.4 issue. If anyone could please let me know, that would be great.
Thank you very much,
Rudy
confirm() works as expected here (FF3.6.4 US-en)
I'm don't see any similar issues in Bugzilla, so it's likely that this is not an issue with confirm() itself but, rather with how you're using it.
Can you create a simple, stand-alone test case that reproduces the problem and post it to http://pastie.org so others can test it? If people are able to reproduce it, than it should be submitted as to Bugzilla.