0

私の名前はマヌエルです。私はウェブデザインの学生であり、ウェブデザインの最初の一歩を踏み出し始めています。最近私は検証しようとしました

このサイト:

http://accesosnormalizados.com

私はW3Cバリデーターを使用しましたが、最初は約30のエラーが見つかり、次のようなエラーを除いてすべて修正できます。'属性はありません

「オンロード」'。

どうやらXHTMLonloadタグをサポートしておらず、onloadを使用してVerticalMenuと呼ばれるJoomla拡張機能を使用しています。これは無料の拡張機能であり、うまく機能しますが、特にWebサイトを検証するときに、いくつかのバグがあることがわかりました。

これは拡張機能のPHPコードです。




    get( 'menutype', 'mainmenu' );
    $qry = "SELECT id, name,parent, link,type,browserNav FROM #__menu WHERE menutype = '".$menutype."' AND published = 1 ORDER BY ordering";
    $database->setQuery($qry);
    $rows = $database->loadObjectList();

    if(isset($GLOBALS['vertical_menu'])) $GLOBALS['vertical_menu']++;
    else $GLOBALS['vertical_menu'] = 0;

        function getMenuChildList($rows, $parentId) {
            $childRows = array();
            foreach ($rows as $row) {
                if ($row->parent == $parentId) {
                    $childRows[] = $row;
                }
            }
            return $childRows;
        }

        function drawVerticalMenu($rows, $showsubcats, $parentId = 0) {
            $categories = $showsubcats || !$parentId ? getMenuChildList($rows, $parentId) : array();
            if ($parentId) {
                if (!count($categories)) {
                    echo '';
                    return;
                } else echo '';
                echo '';
            } else echo '';
            echo '';
            foreach ($categories as $category) {
                $link = $category->link. (preg_match("/^http:\/\/|^https:\/\//",$category->link)? "" : '&Itemid='.$category->id);
                $blank = $category->browserNav? ' target="_blank" ' : ' ';
                echo 'id.'" class="menu">'.$category->name.' ';
                drawVerticalMenu($rows, $showsubcats, $category->id);
            }
            echo '';
            if ($parentId && count($categories)) echo '';
        }

    $document = &JFactory::getDocument();
    $document->addScript('https://ajax.googleapis.com/ajax/libs/dojo/1.5.0/dojo/dojo.xd.js');
    $document->addScript('modules/mod_vertical_menu/script/menu.js');
    $document->addStyleSheet('modules/mod_vertical_menu/style/menu.css');
    $document->addCustomTag('
    
    div#MenuContainer'.$GLOBALS['vertical_menu'].' table#VerticalMenu'.$GLOBALS['vertical_menu'].' {
        width: '.$params->get('categorymenu_width', 150).'px;
        opacity: '.$params->get('categorymenu_out', 0.8).';
        FILTER:  progid:DXImageTransform.Microsoft.Alpha(Opacity='.($params->get('categorymenu_out', 0.8)*100).');
    }
    
    ');
    echo '';
    drawVerticalMenu($rows, $params->get('show_subcats', 1));

    echo 'get('categorymenu_out', 0.8).',over : '.$params->get('categorymenu_over', 1).',duration : '.$params->get('categorymenu_fade', 300).',id : '.$GLOBALS['vertical_menu'].',width : '.$params->get('categorymenu_width', 150).'});" alt=""/>';
    echo '';

    ?>

問題は最後にあります:




    echo '';
    drawVerticalMenu($rows, $params->get('show_subcats', 1));

    echo 'get('categorymenu_out', 0.8).',over : '.$params->get('categorymenu_over', 1).',duration : '.$params->get('categorymenu_fade', 300).',id : '.$GLOBALS['vertical_menu'].',width : '.$params->get('categorymenu_width', 150).'});" alt=""/>';
    echo '';

    ?>

拡張機能は、ユーザーがマウスポインターをその上に移動したときに、onloadイベントを使用してサブメニューを表示すると思います。

私が欲しいのは、onloadを他のイベントハンドラーまたはXHTMLでサポートされているonloadと同様の他のラベルに置き換えることです。

私はあなたの助けをいただければ幸いです...

4

2 に答える 2

1

onload属性を削除してから、ページにいくつかの単純なjavaScriptを追加して、ページの読み込みが完了したときにいくつかの関数を実行できます。

次のようになります。

<script>
    window.onload=function(){
       new WW.VerticalMenu({out : 1,over : 1,duration : 300,id : 0,width : 180}); // example of one of the functions being run
    };
</script>

あなたの研究で頑張ってください

于 2012-12-30T23:32:53.913 に答える
0

ソースはこのように出てくるようです

<img src="/modules/mod_vertical_menu/images/center.gif" style="display:none" onload="new WW.VerticalMenu({out : 1,over : 1,duration : 300,id : 0,width : 180});" alt=""/>

それはメニューをインスタンス化する不快な方法のように見えるので、問題のあるphpエコーセクションを削除してその属性を完全に失い、代わりにdojoを使用しているのでロードするjavascriptを追加しますこれは役立つかもしれません-申し訳ありませんがdojoを使用していません http://mail.dojotoolkit.org/pipermail/dojo-interest/2012-May/066106.html

だからphp賢いこれは

echo '<img src="modules/mod_vertical_menu/images/center.gif" style="display:none"  alt=""/>'; echo '</div>'; 

 echo "<script>" ."javascript or dojo script here ".</script>"

可能であれば、画像を削除して、以下で推奨するウィンドウオンロードを使用することをお勧めします

于 2012-12-30T23:34:59.267 に答える