Jak mogę poprosić użytkownika o pobranie po kliknięciu łącza.
Na przykład zamiast:
<a href="uploads/file.doc">Download Here</a>
Mógłbym użyć:
<a href="#">Download Here</a>
$('a').click... //Some jquery to download the file
W ten sposób Google nie indeksuje moich plików HREF i prywatnych.
Czy można to zrobić za pomocą jQuery, a jeśli tak, to w jaki sposób? A może powinno to być zrobione za pomocą PHP czy czegoś innego?
Odpowiedzi:
Mogę zasugerować, jako bardziej wdzięcznie poniżające rozwiązanie, używając
preventDefault
:Nawet jeśli nie ma Javascript, przynajmniej w ten sposób użytkownik otrzyma opinię.
źródło
Jeśli nie chcesz, aby wyszukiwarki indeksowały określone pliki, możesz użyć pliku robots.txt, aby poinformować roboty sieciowe, aby nie miały dostępu do określonych części witryny.
Jeśli polegasz tylko na javascript, niektórzy użytkownicy przeglądający bez niego nie będą mogli kliknąć Twoich linków.
źródło
robots.txt
nie pomoże, ponieważ nadal będą przechowywane w historii przeglądarki i serwerach pośredniczących.Oto fajny artykuł, który pokazuje wiele sposobów ukrywania plików przed wyszukiwarkami:
JavaScript nie jest dobrym sposobem na niezindeksowanie strony; nie uniemożliwi to użytkownikom bezpośredniego łączenia się z Twoimi plikami (a tym samym ujawniania tego robotom indeksującym) i, jak wspomniał Rob, nie będzie działać dla wszystkich użytkowników.
Łatwym rozwiązaniem jest dodanie
rel="nofollow"
atrybutu, chociaż znowu nie jest to kompletne bez pliku robots.txt.źródło
Tak, musiałbyś zmienić window.location.href na adres URL pliku, który chcesz pobrać.
źródło
źródło
$('blah').each(function(){ $('body').append('<a href="'+xxx+'" download="'+dynamicname+'" />'); }) $('a').trigger('click');
użyłem tego.Korzystanie z funkcji jQuery
źródło
Podając,
window.location.href = 'uploads/file.doc';
że pokazujesz, gdzie przechowujesz swoje pliki. Możesz oczywiście użyć .htacess, aby wymusić wymagane zachowanie przechowywanych plików, ale nie zawsze może to być przydatne ....Lepiej jest utworzyć plik php po stronie serwera i umieścić w nim następującą zawartość:
Ten kod zwróci DOWOLNY plik jako pobrany bez pokazywania, gdzie faktycznie go przechowujesz.
Otwierasz ten plik php przez
window.location.href = 'scripts/this_php_file.php?f=downloaded_file';
źródło
Mogą pomóc ukryte elementy iframe
źródło
Sugeruję użycie zdarzenia mousedown, które nazywa się PRZED zdarzeniem kliknięcia. W ten sposób przeglądarka w naturalny sposób obsługuje zdarzenie kliknięcia, co pozwala uniknąć dziwności kodu:
źródło
Zobacz tutaj podobny post na temat używania jQuery do czyszczenia formularzy: Resetowanie wieloetapowego formularza za pomocą jQuery
Możesz również napotkać problem polegający na tym, że wartości są ponownie zapełniane przez stos wartości Struts. Innymi słowy, przesyłasz swój formularz, robisz cokolwiek w klasie akcji, ale nie usuwasz powiązanych wartości pól w klasie akcji. W tym scenariuszu wyglądałoby na to, że formularz zachowuje wcześniej przesłane wartości. Jeśli w jakiś sposób je utrwalasz, po prostu wyzeruj każdą wartość pola w klasie akcji po utrwaleniu i przed zwróceniem SUKCESU.
źródło