Я пытаюсь запустить 3 приложения из браузера с помощью имен пользовательских протоколов, связанных с этими приложениями. Это может показаться знакомым другим потокам, запущенным в stackoverflow, я считаю, что они не помогают в решении этой проблемы, поэтому, пожалуйста, пока не закрывайте этот поток, ему нужен иной подход, чем предложенный в других потоках.
пример:
ts3server://a.b.c?property1=value1&property2=value2
...
...
для запуска этих приложений я бы сделал
location.href = ts3server://a.b.c?property1=value1&property2=value2
location.href = ...
location.href = ...
, который будет работать в FF, но не в Chrome
Я подумал, что это может быть за счет оптимизации количества записей, когда будет эффективно только последнее существующее изменение.
Итак, я сделал это:
function a ()
{
var apps = ['ts3server://...', 'anotherapp://...', '...'];
b(apps);
}
function b (apps)
{
if (apps.length == 0) return;
location.href = apps[0]; alert(apps[0]);
setTimeout(function (rest) {return function () {b(rest);};} (apps.slice(1)), 1);
}
Но это не решило мою проблему (фактически учитывается только первое location.href
назначение, и хотя другие вызовы происходят достаточно долго после первого (благодаря изменению времени ожидания, скажем, 10000
) ) приложения не запускаются (отображаются предупреждения).
Если я пытаюсь получить доступ к каждому из URI отдельно, приложения запускаются (сначала я звоню location.href = uri1
, нажимая одну кнопку, затем я звоню location.href = uri2
, снова нажимая другую кнопку).
Замена:
location.href = ...
с:
var form = document.createElement('form');
form.action = ...
document.body.appendChild(form);
form.submit();
не помогает и не делает:
var frame = document.createElement('iframe');
frame.src = ...
document.body.appendChild(frame);
Можно ли сделать то, что я пытаюсь сделать? Как это будет сделано?
EDIT:
перефразированное резюме
Я хочу запускать НЕСКОЛЬКО приложений после одного нажатия на ссылку или элемент, похожий на кнопку. Я хочу добиться этого с помощью запуска приложений, связанных с пользовательскими протоколами ... я бы держал список ссылок (в каждой ссылке есть один используемый протокол), и я бы попытался сделать "location.src = link" для всех элементов список. Который при использовании с 'for' оптимизирует присвоение только один раз (последнее значение), поэтому я делаю функцию чем-то вроде рекурсивной функции с задержкой (что исключает оптимизацию и действительно вызывает 3 разных вызова location.src = list [head], когда список разбивается перед каждым вызовом, так что все ссылки учитываются и назначаются для location.src. В Mozilla Firefox все это прекрасно работает, но в google, после первого назначения остальные назначения теряют силу (они, вероятно, выполняются, но не запускают связанный с ним запуск приложения))