2013-06-04 35 views
6

Przeszedłem przez inne podobne problemy, aby rozwiązać ten problem perticular, ale jakoś w tym przypadku wszystkie rozwiązania nie działają.Linki wewnątrz iframe (nie w popup) nie działa

Więc tu jest moje pytanie z przykładowym fragmencie:

Mam plik HTML, który wygląda tak:

<div id="portalRight"> 
    <a target="_blank" href="http://ictforu.com"> <!-- this link works , it opens up another tab --> 
    <ul id="subtabnav"> 
     <li class="datasetTab"> 
      <a href="#">dataset</a> <!-- Click on this will trigger the dataset iframe to be loaded thru a servlet call --> 
     </li> 
     <li class="obsGraphTab" data-bind="css: { disabled: !aekos.subTabViewModel.graphTabsEnabled() }"> 
      <a href="#">Observation Graph</a> 
     </li> 
     ..... 
    </ul> 

    <div id="dataset"> 
     <iframe id="dataset-frame" class="graphiframe" seamless sandbox="allow-same-origin allow-scripts"></iframe> 
    </div> 
    <div id="testViewer"> 
       <iframe id="test-viewer-frame" class="graphiframe" seamless sandbox="allow-same-origin allow-scripts"></iframe> 
    </div> 

</div> 

Jak widać mój iframe nie jest okienko, ale pojawia się w div element: zawartość iframe jest wypełniana przy użyciu serwletu po kliknięciu łącza.

Mój element iframe ma znaczniki podstawowe (podstawa target = "_ parent") w nagłówku elementu iframe.

Użyłem tagu do określenia zachowania, a także link ma target = "_ blank", ale moje linki w ogóle nie działają. Ten sam link działa poza ramką iframe.

przykład iframe: Treść

base target="_parent" /base 

ciało:

a target="_blank" href="http://ictforu.com" /a 

ten link nie robi praca, kliknięcia są ignorowane.

Każda pomoc jest doceniana.

Przepraszam, że wcześniej edytowałem isseus z tagami html.

Dzięki, Madhu

+0

Czy możesz podać przykład kodu, który pojawi się w iframe? – showdev

Odpowiedz

7

ja naprawdę nie można wyjaśnić "dlaczego bo nie wiem zbyt wiele o atrybucie piaskownicy w iframe, ale link otwierany w nowej karcie w porządku dla mnie, kiedy usunięto ten atrybut.

edit:

Patrząc na niego trochę więcej, wydaje się, że można dodać atrybut „allow-top-navigation”, a następnie zmienić link do „target = _parent” i że działa, ale nadal nie będzie działać, jeśli pozostawić target = _blank

Tutaj jest trochę dokumentacji ze strony mozilla

piaskownicy HTML5 tylko
Jeśli określona jako pusty ciąg, atrybut ten umożliwia dodatkowe ograniczenia dotyczące treści może pojawić się w ramce wbudowanej. Wartość atrybutu może być rozdzieloną spacjami listą tokenów, które podnoszą określone ograniczenia. Prawidłowe tokeny to:

  • allow-same-origin: Pozwala, aby treść była traktowana jako pochodząca z normalnego źródła. Jeśli to słowo kluczowe nie jest używane, treść osadzona jest traktowana jako pochodząca z unikalnego źródła.
  • allow-top-navigation: Pozwala osadzonemu kontekstowi przeglądania nawigować (ładować) zawartość do kontekstu przeglądania najwyższego poziomu. Jeśli to słowo kluczowe nie jest używane, ta operacja nie jest dozwolona.
  • allow-forms: Zezwala na osadzanie formularzy w kontekście osadzonego przeglądania. Jeśli to słowo kluczowe nie jest używane, ta operacja nie jest dozwolona.
  • allow-scripts: Pozwala wbudowanemu kontekstowi przeglądania uruchamiać skrypty (ale nie tworzyć okien wyskakujących). Jeśli to słowo kluczowe nie jest używane, ta operacja nie jest dozwolona.

Uwaga:

  • Gdy dokument osadzony ma takie samo pochodzenie jak na stronie głównej, jest wysoce zniechęcać do korzystania zarówno allow-scripts i allow-same-origin w tym samym czasie, jako że pozwala dokument osadzonych programowo usuń atrybut sandbox. Mimo że jest akceptowany, ten przypadek nie jest bardziej bezpieczny niż nie używanie atrybutu sandbox.
  • Generalnie piaskownica to tylko minimalna pomoc, jeśli atakujący może zorganizować wyświetlanie potencjalnie wrogich treści w przeglądarce użytkownika poza piaskownicą iframe. Zaleca się, aby taka treść była obsługiwana z oddzielnej dedykowanej domeny , aby ograniczyć potencjalne uszkodzenia.

Nie ma dużo więcej tam, ale here's the link

+0

Dzięki, chciałem otworzyć link w nowej karcie. Ale wydaje się trudne. –

+1

Całkowicie usunąłem atrybut piaskownicy - teraz łącza działają. Dzięki stary. –

Powiązane problemy