Я использовал pmset для управления режимом ожидания на моем Mac некоторое время теперь, и довольно легко интегрироваться. Вот грубый пример того, как Вы могли назвать ту программу от Java для отключения/разрешения режима ожидания. Обратите внимание необходимость в полномочиях пользователя root выполнить pmset, и поэтому Вам будут нужны они для запущения этой программы.
import java.io.BufferedInputStream;
import java.io.IOException;
/**
* Disable sleep mode (record current setting beforehand), and re-enable sleep
* mode. Works with Mac OS X using the "pmset" command.
*/
public class SleepSwitch {
private int sleepTime = -1;
public void disableSleep() throws IOException {
if (sleepTime != -1) {
// sleep time is already recorded, assume sleep is disabled
return;
}
// query pmset for the current setting
Process proc = Runtime.getRuntime().exec("pmset -g");
BufferedInputStream is = new BufferedInputStream(proc.getInputStream());
StringBuffer output = new StringBuffer();
int c;
while ((c = is.read()) != -1) {
output.append((char) c);
}
is.close();
// parse the current setting and store the sleep time
String outString = output.toString();
String setting = outString.substring(outString.indexOf(" sleep\t")).trim();
setting = setting.substring(7, setting.indexOf(" ")).trim();
sleepTime = Integer.parseInt(setting);
// set the sleep time to zero (disable sleep)
Runtime.getRuntime().exec("pmset sleep 0");
}
public void enableSleep() throws IOException {
if (sleepTime == -1) {
// sleep time is not recorded, assume sleep is enabled
return;
}
// set the sleep time to the previously stored value
Runtime.getRuntime().exec("pmset sleep " + sleepTime);
// reset the stored sleep time
sleepTime = -1;
}
}
Плагин автозаполнения добавляет функцию unautocomplete () для удаления autocomplete () из полей, в которых она есть, поэтому она должна работать, если изменить ваш код на:
$('input.foo').unautocomplete().autocomplete('url?new_param=bar');
Эта функция unautocomplete () должна удалите все старые события.
Попробовать
$ ('input.foo').unbind('.autocomplete').autocomplete ('url?new_param=bar') ;
Я думаю, ваша проблема в том, что у вас нет формы, включающей поле ввода автозаполнения. Если вы посмотрите код jquery.autocomplete.js, он сделает $ (input.form) .unbind (". Autocomplete"); on unautocomplete (), что означает, что входные данные должны находиться внутри тега формы, чтобы работать.
jQuery предоставляет метод flushCache () ( http://docs.jquery.com/Plugins/Autocomplete ) для удаления содержимого, уже сопоставленного с помощью автозаполнения.
Например, если используется элемент html
и с ним связано автозаполнение. FlushCache можно указать следующим образом: $ ("# txtElement"). FlushCache ();
, и это решит проблему.