it-swarm.com.de

Entfernen Sie das Frameborder-Attribut aus iframes

Der W3C Validator gibt einen Fehler aus, weil Wordpress frameborder="0" zu iframes hinzufügt. Auch der Validator mag das allow-Attribut nicht.

Ich habe eine ähnliche Frage für Vimeo Videos gefunden: WordPress oEmbed W3C Validation . Ich konnte es jedoch nicht zum Laufen bringen.

Das ist der Code, den ich zur function.php-Datei hinzugefügt habe, was jedoch nicht funktioniert:

add_filter( 'oembed_dataparse', function( $return, $data, $url )
{
    if( is_object( $data ) )
    {
        // Remove the unwanted attributes:
        $return = str_ireplace(
            array( 
                'frameborder="0"'
            ),
            '',
            $return
        );
    }
    return $return;
}, 10, 3 );

So sieht das Quelltextfragment aus:

<iframe width="500" height="281" src="https://www.youtube.com/embed/qUi422H0sx0?feature=oembed" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen>

Und weiß jemand für den zweiten Fehler mit allow: Kann er einfach wie der Rahmenrahmen entfernt werden oder gibt es eine HTML5-Version davon?

2

WordPress fügt das Frameborder-Attribut nicht hinzu. YouTube macht. Es ist Teil ihres Einbettungscodes.

Wenn Sie es unbedingt entfernen müssen, können Sie den embed_oembed_html-Filter verwenden, um den zurückgegebenen HTML-Code zu ändern:

function wpse_308247_remove_frameborder( $html, $url ) {
    // If the URL to be embedded is from YouTube.
    if ( strpos( $url, 'youtube.com' ) !== false ) {
        // Replace the frameborder attribute with an empty string.
        $html = str_replace( 'frameborder="0"', '', $html );
    }

    return $html;
}
add_filter( 'embed_oembed_html', 'wpse_308247_remove_frameborder', 10, 2 );

Aber hier ist die Sache: Sie bekommen nichts Besonderes, um Fehler im Validator zu vermeiden. Es ist wichtig, die Fehler zu verstehen und festzustellen, welche Probleme sie verursachen können, und nicht zu versuchen, jede einzelne Warnung oder jeden einzelnen Fehler ohne Kontext zu entfernen.

In diesem Sinne wird das Attribut frameborder wahrscheinlich nur aus Gründen der Abwärtskompatibilität mit älteren HTML-Versionen von Google hinzugefügt und verursacht keine negativen Auswirkungen, wenn Sie nur dort sind. Ich denke nicht, dass es die Mühe wert ist, es zu entfernen.

Das Attribut allow ist eine andere Situation. Es scheint für die Unterstützung von Chrome-spezifischen Funktionen zu sein. Obwohl es sich um ungültiges HTML handelt, hat es dennoch einen Zweck. Es ähnelt dem Attribut frameborder, es zu belassen, verursacht jedoch keine Probleme.

4
Jacob Peattie