Я пытаюсь сделать букмарклет, который будет загружать обсуждение Hacker News для страницы, на которой я включен, если она существует.javascript bookmarklet дает синтаксическую ошибку в '()'
Вот код, как я его запустить в РЕПЛ Node.js'S:
// node.js stuff
require.paths.unshift('.');
var sys = require('util');
var alert = sys.puts;
var XMLHttpRequest = require("XMLHttpRequest").XMLHttpRequest;
//javascript: (function() {
//url = 'http://api.ihackernews.com/getid?url=' + encodeURIComponent(window.location.href);
url = 'http://api.ihackernews.com/getid?url=' + encodeURIComponent('http://blog.asmartbear.com/self-doubt-fraud.html');
http = new XMLHttpRequest();
http.open("GET", url, true);
http.onreadystatechange = (function() {
if (this.readyState == 4) {
alert('foo');
var ids = eval('(' + this.responseText + ')');
if (ids.length > 0) {
ids.reverse();
//window.href = ids[0];
alert(ids[0]);
} else {
alert('No stories found.');
}
}
});
http.send();
//})();
Это работает, как ожидалось. (Это делает использование a little file для имитации XMLHttpRequest в узле.)
раскомментировать строки определения функции (и удаление другого узла-JS материал) дает мне миленький Однострочник, один раз packed:
javascript:(function(){url='http://api.ihackernews.com/getid?url='+encodeURIComponent(window.location.href);http=new XMLHttpRequest();http.open("GET",url,true);http.onreadystatechange=(function(){if(this.readyState==4){alert('foo');var ids=eval('('+this.responseText+')');if(ids.length>0){window.href=ids[0]}else{alert('No stories found.')}}});http.send()})();
Запуск, однако, вызывает консоль ошибок Firefox, чтобы дать мне невероятно полезную «синтаксическую ошибку» сообщения, за которой следует «()» ошибка, указывающая на право после второй скобки.
Я не использую Firebug, потому что его ночной и ночной Firefox не хотят сотрудничать на данный момент.
Решение этого, вероятно, скоро придет ко мне (как правило, я выясню это из процесса объяснения всего в этом текстовом поле), но, полагаю, я был бы признателен за любую помощь в этом. Меня это очень беспокоит. :/
Все, кого я думал, что SO должен был дать мне один из этих баров наверху, когда кто-то бьет меня до ответа :( – Domenic
@Domenic: он использует случайный опрос, а не ожидающий опрос (поддерживая единственное соединение, пока что-то не произойдет) или современный способ WebSockets PUSH (fo r новых браузеров). Это означает, что вы не можете узнать минутку или два. Иногда вредителем. –
А, я помню, как раньше бегал по этому поводу. Хотя ваше решение предотвращает возникновение ошибки, это не помогает моей реальной проблеме. Но это, я полагаю, для другого вопроса, и это было задано много раз. –