Chciałbym osiągnąć następujący wpływ interfejsu użytkownika, naprawdę doceniany za pomoc lub wskazówkę.

1) Po kliknięciu łącza okno pojawia się do boku (korzystnie względem położenia łącza zamiast stałego). Link jest wskazywany na adres URL oparty na PHP.

2) Okno wyskakujące powinno mieć niektóre "relacje" lub taka sama przestrzeń nazwa "do oryginalnego okna, na przykład, przechodząc zdarzenia myszy, przekrojowo" przewiń do "itp.

Jest wykonalny przez Div, nie jestem pewien, czy jest również prawdziwy w różnych oknach. Nie znajduję nawet czegoś do spróbowania.

Nie jestem ekspertem w dziedzinie jQuery ani projektowania stron internetowych, więc proszę podać swoją radę z wystarczającymi szczegółami dla mnie zacząć. Wielkie dzięki.


Jeśli chodzi o odpowiedzi ...

Przede wszystkim dziękuję! Obecnie testuję "Otwieracz" ... kiedy to robię, zastanawiam się, czy można się odwołać obiekty z różnych okien. Na przykład następujący kod,

function mse_over()
{
  $('#'+object).css('border', '2px ridge brown');
}

Co po prostu zmienia kolor granicy obiektu.

Moje pytanie jest w oknie podrzędnym, możesz to zrobić, jeśli obiekt jest w oknie macierzystym (i odwrotnie). Jednym ze sposobów, aby zadzwonić do "MSE_OVE" z dziecka. Ale czy można bezpośrednio uzyskać dostęp do okien transmisji obiektów? Dziękuję Ci.

2
user180574 18 sierpień 2012, 04:57

4 odpowiedzi

Najlepsza odpowiedź

Jeśli okno jest otwarte za pomocą linku, z pewnością jest to możliwe do zarządzania treścią zarówno z dziecka do rodzica, jak i odwrotnie.

Musisz przypisać okno dziecko do obiektu JavaScript. Ten przykład otwiera nowe okno, a następnie zmienia tytuł okna:

child_window = window.open('test.php');

$(child_window.document).ready(function () {
  $(child_window.document).contents().find('#title').html('New title');
});

Podobnie możesz zarządzać rodzicami, przypisując okno.Opener do obiektu:

parent_window = window.opener

Jest to podstawowy JavaScript, JQuery, sprawia, że niektóre z selektorów i manipulacji stron nieco łatwiejsza.

2
d_ethier 18 sierpień 2012, 01:07

Tak to mozliwe. Możesz użyć window.Opener Window.Opener to zmienna posiadająca obiekt okna okna, który otworzył bieżące okno.

W moich przykładach zakładam, że używasz jQuery. Nie jest konieczne używanie jQuery, ale używam go do abstrakcji różnic przeglądarki.

Możesz to zrobić w głównym oknie:

window.onChildWindowClick = function(e){
    //do stuff with click event
}

Teraz w oknie popup

$("#element-in-popup").click(function(e){
    window.opener.onChildWindowClick(e);
});
1
bigblind 18 sierpień 2012, 01:18

http://www.w3.org/tr/webmessaging/#web-Messing9/ A >. & amp; http://www.w3schools.com/jsref/prop_win_opener.asp może Ci pomóc.

Wiadomości krzyżowe umożliwia przejście zdarzeń między Windows. Jednak skrypty krzyżowe są niedozwolone.

Dla okna nadrzędnego:

var event = function() {...};
childw = window.open(...);

Dla okien dziecięcych:

window.opener.func();
0
Shih-En Chou 18 sierpień 2012, 01:01

Możliwości obejmują również użycie "Localstorage". Będzie działać tak długo, jak "pochodzenie" jest taka sama, a przeglądarka pochodzi z tego samego dostawcy.

W jednym oknie utwórz słuchacz zdarzeń z:

window.addEventListener('storage', function(e) {...

W innym oknie dodaj lub zmień coś za pomocą Localstorage:

localStorage.setItem("key", "value");

Dowiesz się, że jeśli spróbujesz ustawić istniejący przedmiot do tej samej wartości, co wcześniej, wydarzenie (z tego, co widziałem) nie być wywołane.

Znalazłem wskazówki na https://developer.mozilla.org/ En-US / Docs / Web / API / Web_storage_api / Korzystanie_the_web_storage_api

0
Harry Pehkonen 29 czerwiec 2016, 21:08