Вы можете сделать это, не отправив форму.
Например, если кнопка отправки формы с идентификатором «поиск» находится в другой форме. Вы можете вызвать событие click на этой кнопке отправки и после этого вызвать ev.preventDefault. В моем случае я подтверждаю форму B из представления формы A. Подобно этому
function validateFormB(ev){ // DOM Event object
//search is in Form A
$("#search").click();
ev.preventDefault();
//Form B validation from here on
}
Чтобы заставить Process.Start использовать exec напрямую вместо использования механизма ОС для открытия файлов, вы должны установить UseShellExecute в false. Это также верно для Linux и Windows.
Process.Start(new ProcessStartInfo (
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
"--no-first-run")
{ UseShellExecute = false });
Обратите внимание, что вы также можете использовать «open» для вашего случая использования, чтобы правильно запустить пакет приложений Chrome.Используйте аргумент '-a', чтобы заставить его запустить конкретное приложение, аргумент '-n', чтобы открыть новый экземпляр, и '--args', чтобы передать аргументы:
Process.Start(new ProcessStartInfo (
"open",
"-a '/Applications/Google Chrome.app' -n --args --no-first-run")
{ UseShellExecute = false });
Похоже, что Process
использует для запуска утилиту командной строки open .
Вы должны избегать прямого вызова исполняемого файла. Если приложение уже запущено, оно будет запускать второй его экземпляр вместо активации уже запущенного экземпляра. Это, вероятно, не то, что вы хотите, и не все приложения могут справиться с этим в любом случае.
С открытым синтаксисом запуска Chrome будет
open -a Chrome
. Я не знаю, как класс Process работает в MacOS X, но я предполагаю, что параметры должны быть похожими.
Обратите внимание: если вы просто хотите открыть веб-страницу, вам не следует указывать исполняемый файл; вместо этого просто передайте URL, чтобы он открывался в браузере пользователя по умолчанию. Это действительно для любой платформы.
Process.Start("http://www.google.com");
Вы пробовали что-то вроде объединения параметров в имя процесса вместо передачи его отдельно?
var processName = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"; var args = "--no-default-browser-check"; Process.Start(String.Format("{0} {1}", processName, args));
Почему бы вам не попробовать что-то вроде этого:
Process P = new Process();
P.StartInfo.FileName = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome";
P.StartInfo.Arguments = "--no-default-browser-check";
P.UseShellExecute = false;
P.Start();