курсор JAVASCRIPT должен быть адаптирован к ТИПУ ДОКУМЕНТА wordpress

#javascript #cursor #doctype

#javascript #курсор #doctype

Вопрос:

если вы знакомы с отношениями между javascript и объявлением doctype, мы будем признательны за любую помощь. я использую WordPress и пытаюсь включить скрипт курсора на страницу. скрипт работает без doctype wordpress по умолчанию, с ним — нет. есть предложения, как заставить скрипт cursor работать, пожалуйста?

Объявление HTML doctype для моего WordPress:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  

Код для курсора:

 <STYLE type="text/css">
    <!--
    .kisser {
      position:absolute;
      top:0;
      left:0;
      visibility:hidden;
    }
    -->
    </STYLE>

    <SCRIPT language="JavaScript1.2" type="text/JavaScript">
    <!-- cloak

    //Kissing trail
    //Visit http://www.rainbow.arch.scriptmania.com for this script

    kisserCount = 15 //maximum number of images on screen at one time
    curKisser = 0 //the last image DIV to be displayed (used for timer)
    kissDelay = 1200 //duration images stay on screen (in milliseconds)
    kissSpacer = 30 //distance to move mouse b4 next heart appears
    theimage = "cur.png" //the 1st image to be displayed
    theimage2 = "small_heart.gif" //the 2nd image to be displayed



    //Browser checking and syntax variables
    var docLayers = (document.layers) ? true:false;
    var docId = (document.getElementById) ? true:false;
    var docAll = (document.all) ? true:false;
    var docbitK = (docLayers) ? "document.layers['":(docId) ? "document.getElementById('":(docAll) ? "document.all['":"document."
    var docbitendK = (docLayers) ? "']":(docId) ? "')":(docAll) ? "']":""
    var stylebitK = (docLayers) ? "":".style"
    var showbitK = (docLayers) ? "show":"visible"
    var hidebitK = (docLayers) ? "hide":"hidden"
    var ns6=document.getElementByIdamp;amp;!document.all
    //Variables used in script
    var posX, posY, lastX, lastY, kisserCount, curKisser, kissDelay, kissSpacer, theimage
    lastX = 0
    lastY = 0
    //Collection of functions to get mouse position and place the images
    function doKisser(e) {

      posX = getMouseXPos(e)
      posY = getMouseYPos(e)
      if (posX>(lastX kissSpacer)||posX<(lastX-kissSpacer)||posY>(lastY kissSpacer)||posY<(lastY-kissSpacer)) {
        showKisser(posX,posY)
        lastX = posX
        lastY = posY
      }
    }
    // Get the horizontal position of the mouse
    function getMouseXPos(e) {
      if (document.layers||ns6) {
        return parseInt(e.pageX 10)
      } else {
        return (parseInt(event.clientX 10)   parseInt(document.body.scrollLeft))
      }
    }
    // Get the vartical position of the mouse
    function getMouseYPos(e) {
      if (document.layers||ns6) {
        return parseInt(e.pageY)
      } else {
        return (parseInt(event.clientY)   parseInt(document.body.scrollTop))
      }
    }
    //Place the image and start timer so that it disappears after a period of time
    function showKisser(x,y) {
      var processedx=ns6? Math.min(x,window.innerWidth-75) : docAll? Math.min(x,document.body.clientWidth-55) : x
      if (curKisser >= kisserCount) {curKisser = 0}
      eval(docbitK   "kisser"   curKisser   docbitendK   stylebitK   ".left = "   processedx)
      eval(docbitK   "kisser"   curKisser   docbitendK   stylebitK   ".top = "   y)
      eval(docbitK   "kisser"   curKisser   docbitendK   stylebitK   ".visibility = '"   showbitK   "'")
      if (eval("typeof(kissDelay"   curKisser   ")")=="number") {
        eval("clearTimeout(kissDelay"   curKisser   ")")
      }
      eval("kissDelay"   curKisser   " = setTimeout('hideKisser("   curKisser   ")',kissDelay)")
      curKisser  = 1
    }
    //Make the image disappear
    function hideKisser(knum) {
      eval(docbitK   "kisser"   knum   docbitendK   stylebitK   ".visibility = '"   hidebitK   "'")
    }

    function kissbegin(){
    //Let the browser know when the mouse moves
    if (docLayers) {
      document.captureEvents(Event.MOUSEMOVE)
      document.onMouseMove = doKisser
    } else {
      document.onmousemove = doKisser
    }
    }
    window.onload=kissbegin
    // decloak -->
    </SCRIPT>


    <!--Simply copy and paste just before </BODY> section of your page.-->

    <SCRIPT language="JavaScript" type="text/JavaScript">
    <!-- cloak
    // Add all DIV's of hearts
    if (document.all||document.getElementById||document.layers){
    for (k=0;k<kisserCount;k=k 2) {
      document.write('<div id="kisser'   k   '" class="kisser"><img src="'   theimage   '" alt="" border="0"></div>n')
      document.write('<div id="kisser'   (k 1)   '" class="kisser"><img src="'   theimage2   '" alt="" border="0"></div>n')

    }
    }

    // decloak -->
    </SCRIPT>
  

Комментарии:

1. Тестирование для браузеров эпохи 4.x? Используя большой стек глобальных данных? Широко используете eval ? Зацикливание onload ? Этот скрипт полон обходных путей для древних браузеров и имеет ужасный, ужасный стиль. Я бы выбросил его и начал с нуля (ну, не совсем, поскольку это скрипт отслеживания курсора, я бы просто выбросил его, а затем ушел, чтобы вздрогнуть на некоторое время).

2. Этот скрипт довольно ужасен. Чего вы действительно хотите достичь? Захватывать старые скрипты из весьма сомнительных источников, подобных этому, не лучший способ заставить работать современный веб-сайт.

Ответ №1:

Скрипт содержит очень старый код обнаружения браузера, это может привести к его сбою в «более новых» браузерах с более строгим DOCTYPE.

Попробуйте удалить ‘language=»JavaScript1.2″‘ в теге script. Если это не сработает, вам придется переписать определение браузера.

Сам скрипт не очень сложный, хотя, возможно, вы могли бы найти части в другом месте и объединить их. Вам нужно сделать две вещи:

  1. Скрыть курсор (что делается с помощью CSS)
  2. Выберите положение мыши и поместите туда свой собственный курсор (обычно это изображение). Для этого вам понадобится скрипт, который извлекает положение мыши.

Не должно быть слишком сложно 🙂

Комментарии:

1. language Атрибут ничего не делает, он устарел и используется браузерами только в качестве последнего средства для определения типа скрипта (если он не предполагает, что JavaScript используется по умолчанию (что в наши дни встречается очень редко), и type атрибута нет); вы не можете изменить поведение движка JavaScript, используя этот старый, устаревший атрибут. Более того, в современных браузерах вы можете стилизовать изображение курсора с помощью CSS; не то чтобы мне это нравилось, но это возможно.

2. язык устарел, а тип, безусловно, необходим (проверьте W3C).

3. Не в последней спецификации , где он был установлен по умолчанию text/javascript , потому что все браузеры принимали этот тип, когда он не был указан.