No meu aplicativo.js, eu tenho o manifesto para arquivos js externos como tal
//= require jquery
//= require jquery-ui-1.8.17.custom.min
//= require jquery_ujs
//= require jquery-mousewheel.js
//= require jquery-fileupload
//= require jquery-fileupload-ui
//= require_self
//= require bootstrap.min.js
//= require rails.validations
//= require rails.validations.custom
//= require jwplayer
//= require jwplayer.html5
//= require jwplayer-license
Quando executo meu aplicativo da web no IE8, recebo este erro:
Message: "n.sheet.cssRules" is null or not an object
Após algumas pesquisas, rastreei o erro de volta ao arquivo jwplayer.html5.js. Existe uma maneira de excluir esse arquivo de dentro de application.js quando o IE8 é detectado?
Respostas:
0 para resposta № 1Eu corri para o mesmo problema com a mesma configuração (Rails 3, JWPlayer 6.1.x, etc). Por que vale a pena, a atualização para o JWPlayer 6.2.x não resolveu o problema
Eu não tenho uma solução, mas eu tenho uma solução alternativa. Eu puxei o JWPlayer fora do meu aplicativo.js, adicionado <%= yield :javascripts %>
para o meu application.html.erb, e movi os includes do JWPlayer para somente a view onde eu precisava deles:
<% content_for :javascripts do %>
<%= javascript_include_tag "jwplayer" %>
<%= javascript_include_tag "jwplayer.html5" %>
<% end -%>
Note que no meu caso, eu também tive que adicionar esses arquivos para config.assets.precompile
.
Essencialmente, o que está acontecendo é que o IE8 (epresumivelmente 7) está enlouquecendo se não há nenhuma instância do JWPlayer na página. O conserto ideal seria realmente que o próprio JWPlayer verifique se é esse o caso em vez de deixar o IE lançar um erro, mas até que ele conserte no final, isso pelo menos faz as coisas funcionarem.
É frustrante e longe de ser uma solução ideal, mas funcionou na minha aplicação.
0 para resposta № 2
Eu estava lutando com isso também. Eu fiz algum trabalho na gema jwplayer-rails. Eu ainda estou esperando o meu pedido de puxar para passar. Por agora, siga as informações em este readme para colocar tudo em funcionamento. Leia mais sobre minha resposta aqui.