Действительно ли getElementByClass безопасно использовать через браузеры как getElementById?

В Rails 4 принятый ответ (rake db:sessions:clear) больше не работает, потому что ActiveRecord :: SessionStore был извлечен в гем active_record-session_store. (См. здесь для дальнейшего объяснения)

Теперь вы можете либо установить гем active_record-session_store и использовать rake db:sessions:clear, как в Rails 3, либо создать пользовательскую задачу Rake, которая выглядит так:

namespace :db do
    namespace :sessions do
        desc "Clear ActiveRecord sessions"
        task :clear => :environment do
            sql = 'TRUNCATE sessions;'
            ActiveRecord::Base.connection.execute(sql)
        end
    end
end

9
задан Ben Blank 22 May 2009 в 22:38
поделиться

5 ответов

getElementsByClassName , к сожалению, не является надежным кросс-браузером. В настоящее время он поддерживается самыми последними версиями Firefox, Opera, Safari и Chrome, но не поддерживается в Internet Explorer или Konqueror, согласно Quirksmode .

Если вы хотите использовать кроссбраузерность , вам придется предоставить свою собственную реализацию для тех браузеров, которые ее не поддерживают, как в блоге PPK :

function getElementsByClassName(node,classname) {
    if (node.getElementsByClassName)
        return node.getElementsByClassName(classname);
    else {
        // your custom function
    }
}
9
ответ дан 4 December 2019 в 13:49
поделиться

I would suggest using a wrapper library like prototype.js or jQuery, which both support a css selector model, and handle browser compatibility issues (IE6-7 being the bigger issues usually)

1
ответ дан 4 December 2019 в 13:49
поделиться

Как уже упоминалось другими, getElementsByClassName недоступен в Internet Explorer.

См. Раздел Настройка DOM в Документ «Прототипы объектной модели», часть 1: Введение для получения информации о том, как реализовать функциональность в IE.

2
ответ дан 4 December 2019 в 13:49
поделиться

IIRC, getElementsByClassName был представлен в Firefox 3, Safari 3.1 и был в Chrome с самого начала. Я не знаю, был ли он добавлен в Opera, но его вообще нет в Internet Explorer. (Хотя его можно добавить в IE8, расширив прототипы DOM; см. Ответ Гранта .)

Другими словами, если вам нужен кроссбраузер getElementsByClassName , вы нужно либо использовать собственный, либо использовать фреймворк.

2
ответ дан 4 December 2019 в 13:49
поделиться

Если вы действительно хотите его использовать, вы можете проверить, поддерживает ли объект getElementsByClassname, прежде чем использовать его, и вернуться к реализации функции JS, если браузер ее не поддерживает. .

1
ответ дан 4 December 2019 в 13:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: