0

HTML anzeige für alle Browser??

Grüßt euch,

hab mir die Anzeige von 11 Files versucht übersichtlicher zu gestalten. Funktioniert auch super. Blöd ist nur, das diejenigen welche Safari benutzen, sich ganz schnell gemeldet haben. Es läuft da leider nicht. Die Mac-App stürzt bei dem Versuch es anzeigen zu lassen komplett ab. (aber hier kann ich es ja abfangen)

Hat einer von euch da eventuell was Ähnliches für die Ansicht umgesetzt? Was jedoch auf allen Browsern läuft.

Würde es ungern verwerfen. Da man schneller ist, wenn man die Files im vollen Format anschauen kann und auch das Herunterladen in den Download Ordner (mit dem Original Filenamen) klappt.

Hier mal ein Auszug des Skriptes ohne CSS. Zur Vereinfachung ist auch nur ein Grid-Container mit dem dazugehörigen Modal enthalten + das Herunterladen des Files, welches dem Modal zugeordnet ist.

<aside class = 'grid-container'>
<aside class = 'gridFormat gridTwo item-1'> <button class= 'myBtn' ><embed src='" +
    if linkBild1 then
        linkBild1
    else
        first(select NinoxKeys).link_kein_Bild
    end +
    "' width=200 height=200
 type=application/pdf> <span style=display: block; width: 80px >Bild 1</span> </button>
<div id='myModal0' class='modal'>
  <!-- Modal content -->
  <div class='modal0-content'>
    <div class='modal-header'>
      <span class='close'>×</span>


      <h2>Bild 1</h2>
    <button1 onclick='download()'>
                  Download file
</button1>
    </div>
    <div class='modal-body'>
      <iframe
              width=100%
              height=750vh
              src='" +
    if linkBild1 then
        linkBild1
    else
        first(select NinoxKeys).link_kein_Bild
    end +
    "'

              frameborder=7

            ></iframe>
    </div>

  </div>
</div>
<script>

var modal = document.getElementsByClassName('modal');

var btn = document.getElementsByClassName('myBtn');

var span = document.getElementsByClassName('close');

btn[0].onclick = function() {
    modal[0].style.display = 'block';
}

span[0].onclick = function() {
    modal[0].style.display = 'none';
}

window.onclick = function(event) {
    if (event.target == modal[0]) {
         modal[0].style.display = 'none';
     }

</script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/axios/0.19.2/axios.min.js'></script>
<script>
function download() {
        axios({
            url: '" +
    linkBild1 +
    "',
            method: 'GET',
            responseType: 'blob'
        })
            .then((response) => {
                const url = window.URL
               .createObjectURL(new Blob([response.data]));
                const link = document.createElement('a');
                link.href = url;
                link.setAttribute('download', '" +
    last(split(text(linkBild1), "/")) +
    "');
                document.body.appendChild(link);
                link.click();
            })
    }
</script>

3 Antworten

null
    • Michi.1
    • vor 10 Monaten
    • Gemeldet - anzeigen

    Kommt man mit:

    if(navigator.appCodeName == 'Mozilla')
    verwende die HTML-Anwendung ansonsten die andere irgendwie weiter??
     

    • Michi.1
    • vor 10 Monaten
    • Gemeldet - anzeigen

    Mit dem Script bekomme ich den Browser. Doch wie kann ich das in ein Textfeld schreiben lassen, damit ich damit weiter arbeiten kann??

    let aa := "
    <html>
    <script>
    navigator.saysWho = (() => {
      const { userAgent } = navigator
      let match = userAgent.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []
      let temp
      if (/trident/i.test(match[1])) {
        temp = /\brv[ :]+(\d+)/g.exec(userAgent) || []
        return `IE ${temp[1] || ''}`
      }
      if (match[1] === 'Chrome') {
        temp = userAgent.match(/\b(OPR|Edge)\/(\d+)/)
        if (temp !== null) {
          return temp.slice(1).join(' ').replace('OPR', 'Opera')
        }
        temp = userAgent.match(/\b(Edg)\/(\d+)/)
        if (temp !== null) {
          return temp.slice(1).join(' ').replace('Edg', 'Edge (Chromium)')
        }
      }
      match = match[2] ? [ match[1], match[2] ] : [ navigator.appName, navigator.appVersion, '-?' ]
      temp = userAgent.match(/version\/(\d+)/i)
      if (temp !== null) {
        match.splice(1, 1, temp[1])
      }
      return match.join(' ')
    })()
    alert(navigator.saysWho) // outputs: `Chrome 89`
    </script>
    </html>
    ";
    html(aa)
    

    Bekomme das hier nicht angepasst. Wie müsste ich result bzw. den alert mit dem (navigator.saysWho) anpassen, damit ich es in ein Textfeld schreiben lassen kann und somit am Ende die Ausgabe vom HTML anpassen kann. Nach dem Motto:  Textfeld=Safari then die einfache Ansicht else die komplexe.

    function myFunction() {
    let result = document.querySelector('#KV').value;
    let idNX = '" +
        raw(Nr) +
        "';
    if (result) {
     database.update(idNX, 'VE' , result)
    }
    
      • Michi.1
      • vor 10 Monaten
      • Gemeldet - anzeigen

      Gelöst. Wer es brauchen kann.

      let aa := "
      <!DOCTYPE html>
      <html>
      <style>
      p {
          visibility: hidden
      }
      </style>
      <p>" +
          user_Name +
          "</p>
      <body>
      <script>
      navigator.saysWho = (() => {
        const { userAgent } = navigator
        let match = userAgent.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []
        let temp
        if (/trident/i.test(match[1])) {
          temp = /\brv[ :]+(\d+)/g.exec(userAgent) || []
          return `IE ${temp[1] || ''}`
        }
        if (match[1] === 'Chrome') {
          temp = userAgent.match(/\b(OPR|Edge)\/(\d+)/)
          if (temp !== null) {
            return temp.slice(1).join(' ').replace('OPR', 'Opera')
          }
          temp = userAgent.match(/\b(Edg)\/(\d+)/)
          if (temp !== null) {
            return temp.slice(1).join(' ').replace('Edg', 'Edge (Chromium)')
          }
        }
        match = match[2] ? [ match[1], match[2] ] : [ navigator.appName, navigator.appVersion, '-?' ]
        temp = userAgent.match(/version\/(\d+)/i)
        if (temp !== null) {
          match.splice(1, 1, temp[1])
        }
        return match.join(' ')
      })()
      {
      let jnValue = document.querySelector('p').innerHTML;
      let result1 = navigator.saysWho;
      let idNX1 = '" +
          raw(Nr) +
          "';
      if (jnValue === 'benutzer1') {
      database.update(idNX1, 'E7' , result1)
      }else
      if (jnValue === 'benutzer2') {
      database.update(idNX1, 'H7' , result1)
      }else
      if (jnValue === 'benutzer3') {
      database.update(idNX1, 'G7' , result1)
      }else
      if (jnValue === 'benutzer4') {
      database.update(idNX1, 'F7' , result1)
      }
      }
      </script>
      </body>
      </html>";
      html(aa)
      

      Der aktive Browser wird im Format: "Safari 122" bei Änderung  in die dazugehörigen Textfelder  der Benutzer  geschrieben.   "Benutzer1" / Benutzer2 / usw.

      Jetzt kann man die Ansicht nach Browser anzeigen lassen.

      if userFullName() = "benutzer1" and
                      text(first(split(text('benutzer1'), " "))) != "Safari" or
                  userFullName() = "benutzer2" and
                      text(first(split(text('benutzer2'), " "))) != "Safari" or
              userFullName() = "benutzer3" and
                  text(first(split(text('benutzer3'), " "))) != "Safari" or
          userFullName() = "benutzer4" and
              text(first(split(text('benutzer4'), " "))) != "Safari" then
          html(css + content)
      else
          html(einfach)
      end
      

      Geht bestimmt auch einfacher, aber es löst das Problem.