1
我試圖做一個書籤,將加載了黑客新聞的討論對我在,如果它存在的頁面。JavaScript的書籤給出了語法錯誤「()」
下面的代碼,因爲我有它在node.js中的REPL運行:
// 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的錯誤控制檯給我提供非常有用的消息「語法錯誤」,然後在第二個括號後面加上一個「()」錯誤。因爲它的夜間和Firefox的夜間不想在此刻配合我沒有使用Firebug
。
這個問題的解決可能會很快就到我這裏來(通常我弄明白從解釋在該文本框中一切的過程中),但我想我會很感激有這方面的幫助。這真的很困擾我。 :/
噢人,我是這麼認爲的應該給我在頂部的酒吧之一,當有人打我一個答案:( – Domenic 2010-11-17 03:21:13
@Domenic:它採用輪詢偶然,而不是等待輪詢(保持單個連接打開,直到出了事)或現代的WebSockets PUSH方式(fo新的瀏覽器)。這意味着你可能不會在一兩分鐘內找到答案。有時害蟲。 – 2010-11-17 03:37:46
啊,我記得以前跑過這個。儘管您的解決方案確實可以防止發生錯誤,但它並不能幫助我解決實際問題。但是,我想,這是另一個問題,而且之前已經提過很多次。 – 2010-11-17 08:39:55