Рассмотрим этот алгоритм. Когда ваш скрипт загружается (если есть несколько идентичных скриптов), просмотрите document.scripts, найдите первый скрипт с правильным атрибутом «src» и сохраните его и пометьте как «посещенный» атрибутом данных или уникальным именем класса.
Когда следующий скрипт загружается, снова сканируйте документы document.scripts, передавая любой скрипт, уже отмеченный как посещенный. Возьмите первый невидимый экземпляр этого скрипта.
Предполагается, что идентичные сценарии, скорее всего, выполняются в том порядке, в котором они загружаются, от головы до тела, сверху вниз, от синхронного до асинхронного.
(function () {
var scripts = document.scripts;
// Scan for this data-* attribute
var dataAttr = 'data-your-attribute-here';
var i = 0;
var script;
while (i < scripts.length) {
script = scripts[i];
if (/your_script_here\.js/i.test(script.src)
&& !script.hasAttribute(dataAttr)) {
// A good match will break the loop before
// script is set to null.
break;
}
// If we exit the loop through a while condition failure,
// a check for null will reveal there are no matches.
script = null;
++i;
}
/**
* This specific your_script_here.js script tag.
* @type {Element|Node}
*/
var yourScriptVariable = null;
// Mark the script an pass it on.
if (script) {
script.setAttribute(dataAttr, '');
yourScriptVariable = script;
}
})();
Это сканирует весь скрипт для первого сопоставимого скрипта, который не помечен специальным атрибутом.
Затем отметьте этот узел, если он найден, с атрибутом данных поэтому последующие сканирования не будут выбирать его. Это похоже на алгоритмы BFS и DFS с обходным трафиком, где узлы могут быть помечены как «посещенные», чтобы предотвратить повторный просмотр.
32-бит
%windir%\Microsoft.NET\Framework\[version]\config\machine.config
64-бит
%windir%\Microsoft.NET\Framework64\[version]\config\machine.config
{{1} } [версия]
должна быть равна v1.0.3705
, v1.1.4322
, v2.0.50727
или Версия 4.0.30319
.
v3.0
и v3.5
просто содержат дополнительные сборки для v2.0.50727
, поэтому не должно быть config \ machine.config
. v4.5.x
и v4.6.x
хранятся внутри v4.0.30319
.
Это частично зависит ... мой:
C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG
и
C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ CONFIG
C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG