Diğer bir yöntem, web'den erişilebilen bir kaynağı ortaya çıkarmaktır , ancak bu, herhangi bir web sitesinin uzantınızın yüklü olup olmadığını test etmesine izin verecektir.
Uzantınızın kimliğinin olduğunu aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
ve test.png
uzantınızın dosyalarında olduğu gibi bir dosya (örneğin, şeffaf bir piksel görüntüsü) eklediğinizi varsayalım .
Ardından, bu dosyayı web_accessible_resources
manifest anahtarıyla web sayfalarına açarsınız:
"web_accessible_resources": [
"test.png"
],
Web sayfanızda, bu dosyayı tam URL'siyle (bir <img>
etikette, XHR aracılığıyla veya başka bir şekilde) yüklemeyi deneyebilirsiniz :
chrome-extension:
Dosya yüklenirse, uzantı yüklenir. Bu dosyayı yüklerken bir hata oluşursa, uzantı yüklenmemiş demektir.
function detectExtension(extensionId, callback) {
var img;
img = new Image();
img.src = "chrome-extension://" + extensionId + "/test.png";
img.onload = function() {
callback(true);
};
img.onerror = function() {
callback(false);
};
}
Not: Bu dosyayı yüklerken bir hata oluşursa, söz konusu ağ yığını hatası, konsolda onu sessize alma olasılığı olmaksızın görünecektir. Chromecast bu yöntemi kullandığında, bu nedenle oldukça tartışmalara neden oldu ; Sonunda çok çirkin bir çözümle birlikte, Chrome ekibi tarafından Dev Tools'daki çok spesifik hataları tamamen kara listeye alma .
Önemli not: bu yöntem Firefox WebExtensions'ta çalışmayacaktır. Web'den erişilebilen kaynaklar, URL'nin kimliği bilinerek öngörülebilir olduğundan, uzantıyı doğal olarak parmak izine maruz bırakır. Firefox , web'den erişilebilen kaynaklara örneğe özgü rastgele bir URL atayarak bu deliği kapatmaya karar verdi :
Dosyalar daha sonra aşağıdaki gibi bir URL kullanılarak kullanılabilir olacaktır:
moz-extension://<random-UUID>/<path/to/resource>
Bu UUID, her tarayıcı örneği için rastgele oluşturulur ve uzantınızın kimliği değildir. Bu, web sitelerinin bir kullanıcının yüklediği uzantıların parmak izini almasını engeller.
Ancak, uzantı runtime.getURL()
bu adresi almak için kullanabilse de, web sitenize kodu sabitleyemezsiniz.