Автоматически активировать привязанную вкладку - PullRequest
1 голос
/ 28 июня 2011

Я экспериментирую с некоторым кодом JavaScript и сталкиваюсь с проблемой, когда элемент говорит мне, что нельзя щелкнуть.Цель состоит в том, чтобы активировать вкладку на основе привязки в URL.Вот краткая версия:

<tab onClick="showTab('Dogs')">Dogs</tab>
<tab onClick="showTab('Cats')">Cats</tab>
<script type="text/javascript">
var chunks = document.URL.split('#')
if(chunks.length > 1) {
  var anchored_tab = chunks.pop().toLowerCase()
  var tabs = document.getElementsByTagName('tab')
  for(i in tabs) {
    if(tabs[i].innerHTML.toLowerCase() == anchored_tab) {
      alert("trying to click tab "+tabs[i].innerHTML)
      tabs[i].click()  // TypeError: Object#<HTMLElement> has no method 'click'
    }
  }
}
</script>

Предполагая, что URL заканчивается на "#dogs", в предупреждении правильно написано "пытается щелкнуть по вкладке Dogs", но на следующей строке я получаю исключение о том, что элемент неУ меня нет метода click.

Я тестирую на Chrome 12.

Ответы [ 2 ]

0 голосов
/ 28 июня 2011

не все браузеры поддерживают click () для html-элементов. вы можете попробовать .onclick (), но лучше всего было бы использовать кросс-браузерный триггер события клика, как в jQuery или другой библиотеке js

проверьте эту старую почту для получения дополнительной информации

0 голосов
/ 28 июня 2011

Вы можете добавить следующий код где-то выше того, что у вас есть сейчас, что добавит событие триггера к фактическому событию щелчка в браузерах, которые не позволяют непосредственно нажимать ().Обратите внимание, что этот тип функциональности часто находится в библиотеке, такой как jquery или прототип.

if(typeof HTMLElement!='undefined'&&!HTMLElement.prototype.click) {
    HTMLElement.prototype.click=function() {
        var evt = this.ownerDocument.createEvent('MouseEvents');
        evt.initMouseEvent('click', true, true, this.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
        this.dispatchEvent(evt);
    }
}
...