Linki do tej samej strony działają, odwołując się do innego elementu, który ma id="sec-id" na tej samej stronie, używając

<a href="#sec-id"></a>

Na przykład. Link podobny jest krewny.

Jeśli jednak użyję tej samej składni w IFRame na moim placu zabaw w moim Latex.js. (Należy pamiętać, że ustawię zawartość IFrame programowo za pomocą iframe.srcdoc = html)

Przykład: Latex.js plac zabaw, prawy na końcu pierwszej części kliknij link "Zobacz także sekcję 11." W iframe po prawej stronie.

Co może być powodem?

Aktualizacja : Teraz rozumiem źródło problemu: przeglądarka korzysta z podstawowego adresu URL dokumentu, aby wykonać wszystkie względne adresy URL (patrz <base>). Problem zaczyna się od iframe, który ma jego zawartość zestawu z srcdoc: nie określono unikalnego adresu URL podstawowego, aw takim przypadku używany jest adres URL podstawowy ramki / dokumentu nadrzędnego - plac zabaw w moim przypadku (patrz Standard HTML).

Dlatego pytanie staje się: Czy istnieje sposób na odniesienie do srcdoc iframe w bazie URL? A może możliwe, aby przeglądarka nie przedstawia podstawę? lub zrobić podstawowy adres URL, który nie zmienia relatywnych adresów URL {X1}}?

5
MiB 2 czerwiec 2018, 16:48

3 odpowiedzi

Najlepsza odpowiedź

Co z łapaniem wydarzenia i przewijanie do żądanej kotwicy?

$("a").click(function(e) {
    $('.iframe').animate({
       scrollTop: $(e.target.attr('href')).offset().top
    }, 2000);
    return false;
});
1
antasp 7 czerwiec 2018, 19:08

Nie wiem dokładnie, jak można rozwiązać to, myślę, że jest to dlatego, że srcdoc, nie możesz użyć src z typem zawartości, ponieważ limit znaków, ale możesz go przekonwertować Do Blob i to działa, styl jest jednak zagubiony. Może możesz użyć go jako punktu wyjścia, na podstawie strony:

// Get the document content
const doc = document.querySelector('iframe').srcdoc;
// Convert it to blob
const blob = new Blob([doc], {type : 'text/html'});
// Load the blob on the src attr
document.querySelector('iframe').src = URL.createObjectURL(blob);
// Remove srcdoc to allow src
document.querySelector('iframe').removeAttribute('srcdoc');
1
Ander 6 czerwiec 2018, 10:57

W przypadku rekordu wydaje się, że moje pytanie nie jest możliwe, tj. Nie jest możliwe, aby korzystać ze względnych linków samotokrotek w IFrame, który ma jego zestaw zawartości przy użyciu srcdoc. Należy użyć obejścia, zobacz inną odpowiedź.

0
MiB 7 czerwiec 2018, 11:23