Szymi_2004
23.09.2010, 09:42:00
Witam!
Ostatnio zostałem zmuszony do edytowania pewnego skryptu .js, z racji tego, że nie chcę wywracać całości do góry nogami, a mam dość małe pojęcie o JavaScripcie zwracam się do Was z prośbą o drobną pomoc. Otóż w jaki sposób mogę zlecić mojemu skryptowi sprawdzanie zawartości strony (tylko tekstu, nie źródła) pod względem szukanej frazy, a w razie natrafienia na nią - kliknięcia w tekst? Mówiąc krótko chciałbym, aby skrypt znalazł wyraz "Nagłówek" - którego klasa to Title (class=Title) , a następnie po znalezieniu kliknął w niego. Dodam, że link (tekst, jak kto woli) znajduje się w ramce, niestety nie mogę wywołać jej po adresie do którego przenosi, ponieważ jej wartość jej dynamiczna. Ramka ma klasę "frame". Domyślam się, że to kwestia umiejętnego użycia document.getElementById, ale jak wspominałem moja wiedza w zakresie JavaScript'u jest bardzo ograniczona, dlatego też nie jestem pewien jak to posklejać w całość. Bardzo proszę o pomoc. Pozdrawiam!
Skie
23.09.2010, 11:29:49
Trochę to zawiłe, ale rozumiem, że chcesz przenieś użytkownika na adres, podany w atrybucie src tej ramki?
Jeżeli jest to jedna i ta sama ramka zawsze to warto nadać jej atrybut id - np. "href_frame", a potem krótki kodzik:
if (document.getElementById('href_frame')) {
location.href = document.getElementById('href_frame').src;
}
Musisz jednak upewnić, się że podany adres w ramce jest pełny - tj. razem z "http://", bo bez tego nie zawsze taki kod zadziała.
Szymi_2004
23.09.2010, 12:24:32
@Skie: Problem w tym, że nie mam możliwości edycji tej strony. Dodam też, że skrypt ma posłużyć we wtyczce, dlatego odpada wszelka edycja źródła. Odnośnik niestety nie zawiera początku "http://". Próbowałem w tym rozwiązaniem:
Kod
document.getElementById('frame').getElementsByClassName('title').click();
Niestety kod nie działa. Mógłby ktoś przedstawić mi alternatywne rozwiązanie w którym wykorzystywałbym do znalezienia ramki wyłącznie atrybutu class? Chyba, że można to rozegrać w jeszcze inny sposób, tylko o tym nie wiem. Z góry dziękuję za wszelkie odpowiedzi. Pozdrawiam