Jestem wewnątrz ramki iFrame. Kontroluję zawartość wewnętrzną / zewnętrzną / nadrzędną / podrzędną i wszystko to znajduje się w tej samej domenie. Nie ma wyjątków bezpieczeństwa.
Jeśli uruchomię to w konsoli Chrome, obramowanie zostanie zastosowane dokładnie tak, jak chcę:
$("[name="PPDGFrame"]").css("border", "2px solid #334930");
Jednak kiedy robię dokładnie to samo programowo, to nigdy nie działa:
$(document).ready(function() {
$("[name="PPDGFrame"], window.parent.document").css("border", "2px solid #334930");
});
Albo nawet to:
$(document).ready(function() {
setTimeout(function(){
$("[name="PPDGFrame"], window.parent.document").css("border", "2px solid #334930");
}, 3000);
});
Po uruchomieniu w kodzie nie ma błędów, aw konsoli wyraźnie dostaję uchwyt do obiektu. Nadal nie ma granicy.
Co ja robię źle?
Odpowiedzi:
1 dla odpowiedzi № 1Sprecyzować window.parent.document
jako context
dla selector
aby przeszukać, należy go przekazać jako oddzielny argument po ciągu.
$("[name="PPDGFrame"]", window.parent.document)
// ^^
Obecnie znajdujący się w selektorze ,
jest rozumiany jako selektor wielokrotny i window.parent.document
jako selektor elementów z selektory klasy szukać:
<window class="parent document">
Jest to prawidłowy selektor, dlatego nie pojawiają się żadne błędy. To po prostu nie pasuje do niczego, ponieważ prawdopodobnie nie masz takiego elementu w swoim dokumencie.