5

Otrzymuję błąd tylko w IE (v8, nie wiem, czy dzieje się to w starszych wersjach IE, ale nie występuje w przeglądarce Chrome ani Firefox), mi się następujący komunikat, gdy używam debbuger narzędzie dev IE:"Oczekiwany obiekt" błąd za pomocą jQuery tylko w IE8

Breaking on JSScript runtime error - Object Expected 

Tu jest mój kod dotknięty:

$('#deviceProfileSelection').change(function() { //affected line!!!! 
// rest of my code... 
}); 

Ten element #deviceProfileSelection jest zdefiniowana jako następujące:

<select id="deviceProfileSelection"> 
    <option value=""><?php echo getSysMessage("dropDownSelect")?></option> 
    <!-- and other values...--> 
</select> 

Próbowałem już zdefiniować słuchacza .change do $(document).ready(function() {});, ale bez powodzenia. Każdy inny pomysł?

EDIT

starałem się to div używając struktury decyzyjnej PHP, gdzie jeśli warunek jest prawdą, należy go wydrukować div. Ale właściwie to nie było drukowanie, to znaczy, to nie było drukowanie otwierającego tagu "div", a jedynie zamykającego tagu "div".

Przeglądarki mogą interpretować ten błąd, ale IE8, a ta niezdolność IE była przyczyną problemu.

+3

masz jQuery zawarte na stronie przed przystąpieniem do wywołać '$'? – jbabey

+1

Jakiej wersji używa jQuery? – putvande

+4

należy pamiętać, że jQuery v2.x nie obsługuje IE8. Jeśli masz jQuery v2, musisz zamiast tego użyć wersji 1.x. – Spudley

Odpowiedz

2

Problem polega na tym, że w ogóle nie dodano kodu jQuery do kodu. Dodaj następujący wewnątrz znacznika <head>:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script> 

To powinno rozwiązać problem.

+1

OMG, działa idealnie! Próbowałem dołączyć element div za pomocą struktury decyzji php, gdzie jeśli warunek był prawdziwy, powinien wydrukować element div.Ale właściwie to nie było drukowanie, to znaczy, to nie było drukowanie otwierającego tagu "div", a jedynie zamykającego tagu "div". –

+0

Chrome i Firefox ignorują ten "nieotwarty" element div i dlatego nie widzę błędu. –

1

Sprawdź:

  1. Czy jQuery włączone gdy ten kod jest wykonywany? (Zrobiłbym alert na $ i zobaczę, co otrzymujesz)
  2. Upewnij się, że istnieje element deviceProfileSection.
1

miałem podobny problem do tego wcześniej z IE8, jeśli jest to ten sam problem, że nie można znaleźć biblioteki jQuery, sprawdź swoją ścieżkę lub przetestować go z CDN

+0

Nie, na pewno jest już dołączony. Mogę normalnie używać innych elementów. –

1

Próbowałem następujący kod w IE8 i działa zgodnie z oczekiwaniami. Jak sugerowano w innych odpowiedziach, użyłem najnowszej wersji JQuery, która jest zgodna z IE8 z CDN JQuery. Nie używaj wersji 2.x - nie działa ze starszymi przeglądarkami. Upewnij się także, że kod zdarzenia zmiany znajduje się w module obsługi document.ready.

<html> 
    <head> 
     <title>IE8 Object Expected</title> 
     <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script> 
     <script type="text/javascript"> 
      $(function(){ 
       $("#deviceProfileSelection").change(function(){ 
        console.log("#deviceProfileSelection changed to " + $(this).find(":selected").text()); 
       }); 
      }); 
     </script> 
    </head> 
    <body> 
     <form> 
      <select id="deviceProfileSelection"> 
       <option value="">Select...</option> 
       <option value="1">One</option> 
       <option value="2">Two</option> 
       <option value="3">Three</option> 
      </select> 
     </form> 
    </body> 
</html> 
Powiązane problemy