奇妙な状況に遭遇しました。ユーザーが外部のWebサイトをクリックして非常に簡単かつ迅速に共有できるようにするJavaScriptブックマークレットを作成しています。タイトル、ページURLを取得し、ページ上のテキストを選択した場合は、それも取得します。
問題は、何らかの理由で外部ドメインで機能しないため、内部で使用すると、次のような形式のURLを含む共有ウィンドウが表示されることです。
http://internaldomain.com/sharetool.php?shareid=http://internaldomain.com/anotheroddpage.html&title= ....
それはうまくいきますが、外部ドメインを使用して、最終的に次のような形式のURLを作成しようとすると、
次に、ページにForbidden Errorが表示され、ロードできません...外部ドメインアドレスから_http://
_を手動で削除した場合、再び正常にロードされます。
だから..この問題を回避する最善の解決策は、JavaScriptブックマークレットを変更して、ウィンドウをロードしているときにhttp
を削除することだと考えています。現在のブックマークレットの外観は次のとおりです。
_javascript:var d=document,w=window,e=w.getSelection,k=d.getSelection,x=d.selection,s=(e?e():(k)?k():(x?x.createRange().text:0)),f='http://internaldomain.com/sharetool.php',l=d.location,e=encodeURIComponent,u=f+'?u='+e(l.href)+
_
ご覧のとおり、e(l.href)
はURLが渡される場所です。
外部ドメイン_http://
_を削除するように変更するにはどうすればよいですか?
考えられるすべてのプロトコルを考慮した方が良いと思います。
result = url.replace(/(^\w+:|^)\/\//, '');
url = url.replace(/^https?:\/\//,'')
l.href.replace(/^http:\/\//, '')
必要な正規表現は/(?:http://)(.*)/i
であると思います。これの最初の一致はそれであるはずです。