Допустим, у меня есть веб-сайт, который работает лучше, если клиент установил настольное приложение и вошел в него. Я бы хотел уметь делать две вещи:
Я бы хотел что-то, что работает в Windows и OSX, в любом из основных браузеров. Linux - это бонус.
Несколько мыслей:
Спасибо!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


У вас может быть плагин для браузера (activex для IE или плагин Netscape для остальных браузеров), который может взаимодействовать с приложением. Когда веб-страница загружена, она может попытаться создать экземпляр плагина и, если это удастся, использовать его в качестве прокси для приложения. Если это не удается, значит, либо приложение не установлено, либо плагин был явно отключен пользователем. В любом случае ваш веб-сайт должен соответственно ухудшить свою функциональность.
Обновлять: Забыл ответить на ваши вопросы:
По теме использования локального веб-сервера:
Я бы не стал использовать локальный веб-сервер, в основном из соображений безопасности. Требуется довольно много работы, чтобы убедиться, что ваш локальный веб-сервер заблокирован в достаточной степени и нет XSS-уязвимостей, которые могут использовать другие вредоносные веб-сайты, чтобы заставить его делать что-то от их имени.
Кроме того, наличие веб-сервера означает, что либо он должен работать как общесистемный процесс, либо, если он запускается как пользователь, вы можете заставить веб-сайт взаимодействовать только с одним пользовательским экземпляром приложения, даже если несколько пользователей могут войти в систему и запускать его одновременно.
Google Desktop Search пострадал как от уязвимости безопасности XSS (хотя они исправили ее), так и от ограничения возможности использовать его на компьютере только одним пользователем (я не знаю, исправили ли они это еще, хотя есть вероятность, что они сделали) .
Если вы можете выбрать среду разработки для настольного приложения, попробуйте AIR от Adobe. Он позволяет разрабатывать настольные приложения с использованием HTML / javascript, Flash или Flex.
У него есть вызовы API, которые вы можете использовать из флеш-приложения на основе браузера, чтобы узнать, установлено ли настольное приложение AIR, какая версия и т. д. Вы даже можете запустить его и передать параметры из веб-приложения в настольное приложение.
http://www.rogue-development.com/blog2/2008/03/interacting-with-an-air-app-from-a-browser-based-app/
Вы можете зарегистрировать протокол из своего настольного приложения (см. это). Это можно использовать, например, для открытия вашего настольного приложения с произвольными данными с веб-сайта. Затем ваше настольное приложение может отправить HTTP-запрос на ваш веб-сервер, сообщая ему, на какой машине вы находитесь.
Websites can detect if you've got Flash installed.
На самом деле, я считаю, что браузер может определить, установлен ли у вас плагин Flash для браузера, а веб-страницы могут предлагать варианты «установлен» или «удален», которые браузер может выбрать.
В противном случае вы запрашиваете средство, помещая некоторый код на веб-страницу, чтобы иметь возможность проанализировать домашний компьютер пользователя и сообщить о том, что он узнал, вашему веб-сайту.
Вы можете сказать Большая дыра в безопасности?
Websites can detect if you've got Flash installed. How does that work and could it be used for both of my goals?
это довольно просто, ваш браузер пытается отобразить некоторые дополнительные файлы с некоторыми конкретными форматами, такими как flash .swf, а я браузер не находит установку, затем начнется загрузка, или вы получите возможность загрузить эту программу.
Flash также использует AC_RunActiveContent.js, пожалуйста, взгляните на этот js, люди обычно помещают его на свои веб-страницы
if (AC_FL_RunContent == 0) {
alert("This page requires AC_RunActiveContent.js.");
} else {
AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave cabs/flash swflash.cab#version=8,0,0,0','width','981','height','635','id','build5','align','middle','src','build5','quality','high','bgcolor','#ffffff','name','build5','allowscriptaccess','sameDomain','allowfullscreen','false','pluginspage','http://www.macromedia.com/go/getflashplayer','movie','build5' ); //end AC code
}