外部ツールに対して適切な GitHub リポジトリのコンテンツを実行するためにまとめた単純な Javascript ブックマークレットがあります。
javascript:(function(){
var isApex = false;
var sourceLangs = document.getElementsByClassName('lang');
for (var i = 0; i < sourceLangs.length; ++i) {
var l = sourceLangs[i];
if(l.innerHTML == 'Apex') {
isApex = true;
// alert('This is an Apex repo');
}
}
if(location.hostname != 'github.com' || isApex == false) {
alert('This is not a GitHub Apex repository!');
}
else {
window.open('https://githubsfdeploy.herokuapp.com/app/githubdeploy'+location.pathname);
}
})();
Chrome または IE で実行すると (Daring Fireball の JS ブックマークレット ビルダーを介して実行した後、正常に動作します。Firefox では、コンテンツ セキュリティ ポリシー エラーが生成されます。
[15:33:19.318] Content Security Policy: Directive inline script base restriction violated @ https://github.com/Groundwire/Campaign-Combiner
トピックに関するこの SE の質問と、CSP に関する github ブログ投稿を読みました。CSPはブックマークレットに干渉すべきではないことを認めていますが、その時点 (2013 年 4 月) では、「これを正しく理解しているブラウザはありません。」現在、Firefox はまだこれを間違えているのですが、Chrome と IE は間違っていますか?
また、ユーザー スクリプトと CSP に関するブログ投稿も見つけました。著者は、github リポジトリのコードを含めることで、この問題に対処できました。ブックマークレットを次のように変更して、それを試しました。
javascript:document.body.appendChild(document.createElement("script")).src="https://raw.github.com/tet3/GitHubInstallerBookmarklet/master/GHIBkmarklet.js";void(0)
しかし、当然のことながら、呼び出しコードはまだブラウザーから来ているため、ブックマークレットでは機能しませんでした。
要するに、このブックマークレットを Firefox で動作させる方法についてのアイデアはありますか?