В то время как я связан с this question, который объясняет, как «прикрепить» идентификатор для распакованного расширения, что бы решить практические задачи OP-грани, сам вопрос (как указано в названии) интересен.
Если мы посмотрим на Chromium source, мы увидим, что идентификатор - это просто SHA-хэш нормализованного абсолютного пути к расширению. Важнейшие из кода:
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// chromium/src/chrome/browser/extensions/unpacked_installer.cc
int UnpackedInstaller::GetFlags() {
std::string id = crx_file::id_util::GenerateIdForPath(extension_path_);
/* ... */
}
// chromium/src/components/crx_file/id_util.cc
std::string GenerateIdForPath(const base::FilePath& path) {
base::FilePath new_path = MaybeNormalizePath(path);
std::string path_bytes =
std::string(reinterpret_cast<const char*>(new_path.value().data()),
new_path.value().size() * sizeof(base::FilePath::CharType));
return GenerateId(path_bytes);
}
std::string GenerateId(const std::string& input) {
uint8 hash[kIdSize];
crypto::SHA256HashString(input, hash, sizeof(hash));
std::string output =
base::StringToLowerASCII(base::HexEncode(hash, sizeof(hash)));
ConvertHexadecimalToIDAlphabet(&output);
return output;
}
Как таковая, она должна зависеть только от абсолютной файловой системы путь к папке расширения.
Возможный дубликат [Получение идентификатора расширения Chrome для разработки] (http://stackoverflow.com/questions/23873623/obiving-chrome-extension-id-for-development) – Xan
Тем не менее, вы даже это сделали? Вы имеете в виду, с помощью вложенного скрипта, введенного в содержание страницы? – Xan
Я вставляю скрипт, выполняя следующий JavaScript: «var s = document.createElement (« script »); s.src = chrome.extension.getURL ("api.js"); 'потому что мне нужен сценарий для доступа к объекту' window' на любой странице, на которую он вводится. –