2011-09-06 50 views
2

現在是否有長度限制或Safari 5如何使用JavaScript書籤作爲書籤或書籤欄中的鏈接的其他更改?Safari 5更改使用javascript bookmarklets?

下面的小書籤在Safari 4中工作,但在Safari 5中出現錯誤「Safari無法在此操作中使用Javascript」。它與打開一個新窗口似乎沒有任何關係,因爲下面的第二個腳本在5中工作並打開一個新窗口。

是否有其他方法可以將javascript用於瀏覽器操作,無論是作爲書籤還是Safari擴展?

更新11年10月7日:

小書籤現在可以在Safari 5(而不是4)具有一個變化,改變100% to 100%25

javascript:s=document.getElementsByTagName('STYLE'); ex=document.getElementsByTagName('LINK'); d=window.open().document; /*set base href*/d.open();d.close(); b=d.body; function trim(s){return s.replace(/^\s*\n/, '').replace(/\s*$/, ''); }; function iff(a,b,c){return b?a+b+c:'';}function add(h){b.appendChild(h);} function makeTag(t){return d.createElement(t);} function makeText(tag,text){t=makeTag(tag);t.appendChild(d.createTextNode(text)); return t;} add(makeText('style', 'iframe{width:100%25;height:18em;border:1px solid;')); add(makeText('h3', d.title='Style sheets in ' + location.href)); for(i=0; i%3Cs.length; ++i) { add(makeText('h4','Inline style sheet' + iff(' title="',s[i].title,'"'))); add(makeText('pre', trim(s[i].innerHTML))); } for (i=0; i%3Cex.length; ++i) { rs=ex[i].rel.split(' '); for(j=0;j%3Crs.length;++j) if (rs[j].toLowerCase()=='stylesheet') { add(makeText('h4','link rel="' + ex[i].rel + '" href="' + ex[i].href + '"' + iff(' title="',ex[i].title,'"'))); iframe=makeTag('iframe'); iframe.src=ex[i].href; add(iframe); break; } } void 0 

小書籤,在Safari 5的,但未能工作在4:

javascript:s=document.getElementsByTagName('STYLE'); ex=document.getElementsByTagName('LINK'); d=window.open().document; /*set base href*/d.open();d.close(); b=d.body; function trim(s){return s.replace(/^\s*\n/, '').replace(/\s*$/, ''); }; function iff(a,b,c){return b?a+b+c:'';}function add(h){b.appendChild(h);} function makeTag(t){return d.createElement(t);} function makeText(tag,text){t=makeTag(tag);t.appendChild(d.createTextNode(text)); return t;} add(makeText('style', 'iframe{width:100%;height:18em;border:1px solid;')); add(makeText('h3', d.title='Style sheets in ' + location.href)); for(i=0; i%3Cs.length; ++i) { add(makeText('h4','Inline style sheet' + iff(' title="',s[i].title,'"'))); add(makeText('pre', trim(s[i].innerHTML))); } for (i=0; i%3Cex.length; ++i) { rs=ex[i].rel.split(' '); for(j=0;j%3Crs.length;++j) if (rs[j].toLowerCase()=='stylesheet') { add(makeText('h4','link rel="' + ex[i].rel + '" href="' + ex[i].href + '"' + iff(' title="',ex[i].title,'"'))); iframe=makeTag('iframe'); iframe.src=ex[i].href; add(iframe); break; } } void 0 

小書籤,隨着一個新的窗口工作:

javascript:var MTl=document.getElementsByTagName('script');for(var MTi=0,MTr,MTa=[];MTl[MTi];MTi++){if(MTr=MTl[MTi].getAttribute('src')){MTa[MTa.length]=MTl[MTi];}}if(!MTa.length){alert('This page does not use any external scripts');}else if(MTa.length==1){void(window.open(MTa[0].getAttribute('src')));}else{var MTw=window.open('');MTw.document.open();MTw.document.write('<html><head><title>External scripts for '+document.title+'<\/title><\/head><body><h1>External scripts for '+document.title+'<\/h1><p>');for(MTi=0;MTa[MTi];MTi++){MTw.document.write('<a href=\''+MTa[MTi].getAttribute('src')+'\'>'+(MTa[MTi].id?MTa[MTi].id:MTa[MTi].getAttribute('src').replace(/\/$/,'').replace(/^.*\//,''))+'<\/a><br>');}MTw.document.write('<\/p><\/body><\/html>');MTw.document.close();} 
+0

這可能會更好地實現爲Safari擴展 - 是的,堆棧溢出可能是一個更好的地方爲您的問題。 – dan8394

+0

我認爲當書籤試圖打開一個窗口時,Safari 5不喜歡它。 – canisbos

+0

我有其他的小書籤 - 上面加了一個 - 它在Safari 5中打開一個新窗口。 – markratledge

回答

5

我看到了一個與我的小書籤相同的錯誤。事實證明,它一直是不正確的URL編碼,Safari 5.1必須比以前的版本更嚴格。看起來你有同樣的問題。用'%25'替換文字'%'字符,看看你是否有更好的運氣。 (例如,將「width:100%;」更改爲「width:100%25;」。)

太糟糕了,有這樣一個神祕的錯誤消息。

+0

謝謝!就是這樣,將%的一個實例更改爲%25。從來沒有想到自己。 – markratledge

+0

正在尋找適合這個問題的答案。謝謝! –