Newsgroup: it.comp.www.html
Titolo: Segnalibri

Ho da scrivere un testo in HTML in cui ci siano dei segnalibri.
So' che devo usare il tag <a name="segnalibro"></a> ma non riesco a
far funzionare la pagina HTML.
 
Qualcuno puo' postarmi un breve testo HTML che faccia uso dei
segnalibri?
 
 
--
Newsgroup robomoderato - gli articoli vengono approvati automaticamente

 segnalibri?
 
http://w3schools.com/html/html_links.asp
 
 
Leggi dove spiega i "bookmark"


Vorrei scrivere un programma in Java che visualizzi un testo HTML.
Per visualizzare il testo mi hanno consigliato di usare "JEditorPane"
 
Il testo viene visualizzato pero' NON FUNZIONA il segnalibro
"Link a terza scritta".
 
Il segnalibro viene riconosciuto (scritto in blu sottolineato), ma
quando clicco su tale segnalibro non succede nulla, come se il tag
<a name='1'> non esistesse.
 
Di seguito riporto il programma di prova, qualcuno puo' dirmi dove
sbaglio?
 
 
********** EsempioHTML.java **********
 
package esempiohtml;
 
import javax.swing.*;
 
public class EsempioHTML
{
 public static void main(String[] args)
 {
  String html="";
  html=html.concat("<html><body>");
  html=html.concat("<a href='#1'>Link a terza scritta</a>");
  html=html.concat("<h1>Prima scritta</h1>");
  html=html.concat("<h3>Seconda scritta</h3>");
  html=html.concat("<a name='1'>Terza scritta</a>");
  html=html.concat("<h2>Quarta scritta</h2>");
  html=html.concat("</body></html>");
 
  JFrame f=new JFrame("Prova HTML");
  JEditorPane p = new JEditorPane();
  p.setContentType("text/html");
  p.setText(html);
  p.setEditable(false);
 
  JScrollPane scrollPane=new JScrollPane(p);
  f.add(scrollPane);
 
  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  f.setSize(300, 100);
  f.setVisible(true);


 visualizzare il testo mi hanno consigliato di usare "JEditorPane"
 
E` un problema di Java e non di HTML. Dubito che qui troverai gente piu` 
preparata di quella che troveresti in un newsgroup che discuta 
espressamente di Java.
 
Per scrupolo posso dirti che io non userei un identificativo che inizia 
con un numero, quindi userei <a name="cap1"> piuttosto che <a name="1">
 
Tieni anche conto che se non c'e` abbastanza "fuffa" sotto al tuo anchor, 
il browser (o il componente) non aggiunge spazio bianco in basso per 
metterti l'anchor alla prima riga visibile, quindi visivamente non avrai 
alcun effetto.
 
Bye.


 con un numero, quindi userei <a name="cap1"> piuttosto che <a name="1">
 
Non ricordo con che versione di HTML ma mi e` capitato che usando 
<a name=""
il validatore del W3C segnalasse un errore e consigliasse di usare l'id.
Cosi` adesso faccio cosi`:
 
<a href="#ora">Settare l'ora</a>
 
 
 
<hr id="ora" />






Il problema non è tanto dell'HTML generato come contenuto del 
JEditorPane, ma il fatto che il link va gestito alla maniera java 
(quindi Events, Listener e quant'altro), quindi la faccenda è complessa.
 
A questa pagina
 
http://docs.oracle.com/javase/7/docs/api/javax/swing/JEditorPane.html#JEditorPane(java.lang.String)
 
 
c'è una soluzione che però sembra abbastanza complessa per chi come me 
macina poco swing ;-) e tra l'altro sembra adatta più a una pagina 
strutturata con i frame...
 
Some kinds of content may provide hyperlink support by generating 
hyperlink events. The HTML EditorKit will generate hyperlink events if 
the JEditorPane is not editable (JEditorPane.setEditable(false); has 
been called). If HTML frames are embedded in the document, the typical 
response would be to change a portion of the current document. The 
following code fragment is a possible hyperlink listener implementation, 
that treats HTML frame events specially, and simply displays any other 
activated hyperlinks.
 
 
      class Hyperactive implements HyperlinkListener {
 
          public void hyperlinkUpdate(HyperlinkEvent e) {
              if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
                  JEditorPane pane = (JEditorPane) e.getSource();
                  if (e instanceof HTMLFrameHyperlinkEvent) {
                      HTMLFrameHyperlinkEvent  evt = 
(HTMLFrameHyperlinkEvent)e;
                      HTMLDocument doc = (HTMLDocument)pane.getDocument();
                      doc.processHTMLFrameHyperlinkEvent(evt);
                  } else {
                      try {
                          pane.setPage(e.getURL());
                      } catch (Throwable t) {
                          t.printStackTrace();
