Метод МЕТОДА 1 щелчок
HTMLElement
s имеет метод click()
https://developer.mozilla.org/en/DOM/element.click
function goToBar() {
document.getElementById('foo').click();
}
Способ 2 Увольнение синтетических событий
Интересно, почему saluce удалил свой ответ. Это решение - это то, что я использовал в прошлом (когда клик был только IE). То есть, запуская синтетическое событие браузера (не поддельное, как jQuery click()
). Позвольте мне опубликовать решение, используя эту идею ...
DEMO: http://jsfiddle.net/eyS6x/3/
/**
* Fire an event handler to the specified node. Event handlers can detect that the event was fired programatically
* by testing for a 'synthetic=true' property on the event object
* @param {HTMLNode} node The node to fire the event handler on.
* @param {String} eventName The name of the event without the "on" (e.g., "focus")
*/
function fireEvent(node, eventName) {
// Make sure we use the ownerDocument from the provided node to avoid cross-window problems
var doc;
if (node.ownerDocument) {
doc = node.ownerDocument;
} else if (node.nodeType == 9 /** DOCUMENT_NODE */){
// the node may be the document itself
doc = node;
} else {
throw new Error("Invalid node passed to fireEvent: " + +node.tagName + "#" + node.id);
}
if (node.fireEvent) {
// IE-style
var event = doc.createEventObject();
event.synthetic = true; // allow detection of synthetic events
node.fireEvent("on" + eventName, event);
} else if (node.dispatchEvent) {
// Gecko-style approach is much more difficult.
var eventClass = "";
// Different events have different event classes.
// If this switch statement can't map an eventName to an eventClass,
// the event firing is going to fail.
switch (eventName) {
case "click":
case "mousedown":
case "mouseup":
eventClass = "MouseEvents";
break;
case "focus":
case "change":
case "blur":
case "select":
eventClass = "HTMLEvents";
break;
default:
throw "JSUtil.fireEvent: Couldn't find an event class for event '" + eventName + "'.";
break;
}
var event = doc.createEvent(eventClass);
var bubbles = eventName == "change" ? false : true;
event.initEvent(eventName, bubbles, true); // All events created as bubbling and cancelable.
event.synthetic = true; // allow detection of synthetic events
node.dispatchEvent(event);
}
};
document.getElementById('button').onclick = function() {
fireEvent( document.getElementById('link'), 'click');
}
Решение заключается в проверке AndroidX при запуске нового проекта в Android Studio, затем в файле App Module Build.Gradle отлично работает следующее:
def room_version = "2.1.0-alpha03"
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version" // use kapt for Kotlin
Дело в том, что если вы используете AndroidX , то самое последнее - 2.1.0-alpha3
, или, если вы используете библиотеки поддержки , то это 1.1.1
, и это то, что упоминалось в документации . Как уже упоминалось в CommonsWare, это артефакт, и для выяснения отображений см. Эту документацию по отображению . И AndroidX это:
Библиотека AndroidX содержит существующую библиотеку поддержки, а также включает в себя последние компоненты Jetpack .
blockquote>Пример использования вспомогательных библиотек:
dependencies { // Other libraries... implementation 'android.arch.persistence.room:runtime:1.1.1' annotationProcessor 'android.arch.persistence.room:compiler:1.1.1' }
цитируется, что последняя версия Room - 2.1.0-alpha3
blockquote>Это так.
, когда я помещаю эту версию в мой файл build.gradle, проект не может быть скомпилирован, и отображается следующая ошибка
blockquote>Ваша версия в порядке. Ваш артефакт - проблема.
Все новые библиотеки AndroidX. Вы можете выбрать:
Придерживайтесь любой версии, которую вы используете прямо сейчас, и сохраните свой
android.arch.persistence.room:runtime
артефакт и его классы, илиМиграция в AndroidX, в этом случае вы должны использовать
androidx.room:room-runtime
в качестве артефакта, и вам нужно изменить свой код, чтобы ссылаться на классыandroidx
для Room и всего остального