Действительно ли возможно управлять документом SVG, встроенным в документ HTML с JavaScript?

Поскольку вы выполняете целочисленное деление.

Как говорит @Noldorin, если оба оператора являются целыми числами, то используется целочисленное деление.

Результат 0.33333333 не может быть представлен как целое число, поэтому к результату присваивается только целочисленная часть (0).

Если любой из операторов является double / float, тогда будет выполнена арифметика с плавающей запятой. Но у вас будет такая же проблема, если вы это сделаете:

int n = 1.0 / 3.0;
20
задан Jason Bunting 26 September 2008 в 22:40
поделиться

5 ответов

Решение:

в svg:

<script>document.method = function() {}</script>

в HTML (использующий прототип для добавления слушателей события):

<script>$("img").observe("load", function() {$("img").contentDocument.method()});

необходимо слушать событие загрузки на изображении. После того как изображение загружается, можно использовать element.contentDocument для доступа к переменной документа на svg документе. Любые методы, добавленные, к который, будут доступны.

11
ответ дан 30 November 2019 в 00:52
поделиться

Несколько лет назад меня попросили создать основанную на Ajax игру с 2 плеерами с помощью SVG. Это не может быть точно решение, которое Вы ищете, но это может помочь Вам прислушаться к событиям в своем SVG. Вот контроллер SVG:

к вашему сведению, SVG перетаскивался (это был Stratego)

/****************** Track and handle SVG object movement *************/
var svgDoc;
var svgRoot;
var mover='';       //keeps track of what I'm dragging

///start function////
//do this onload
function start(evt){
    //set up the svg document elements
    svgDoc=evt.target.ownerDocument;
    svgRoot=svgDoc.documentElement;
    //add the mousemove event to the whole thing
    svgRoot.addEventListener('mousemove',go,false);
    //do this when the mouse is released
    svgRoot.addEventListener('mouseup',releaseMouse,false); 
}

// set the id of the target to drag
function setMove(id){ mover=id; }

// clear the id of the dragging object
function releaseMouse(){ 
    if(allowMoves == true){ sendMove(mover); }
    mover=''; 
}

// this is launched every mousemove on the doc
// if we are dragging something, move it
function go(evt){
    if(mover != '' && allowMoves != false) {
        //init it
        var me=document.getElementById(mover);

        //actually change the location
        moveX = evt.clientX-135; //css positioning minus 1/2 the width of the piece
        moveY = evt.clientY-65;
        me.setAttributeNS(null, 'x', evt.clientX-135);
        me.setAttributeNS(null, 'y', evt.clientY-65);
    }
}

function moveThis(pieceID, x, y) {
    $(pieceID).setAttributeNS(null, 'x', x);
    $(pieceID).setAttributeNS(null, 'y', y);
}

, Мое приложение было чистым SVG + JavaScript, но это - суть его.

4
ответ дан 30 November 2019 в 00:52
поделиться

Я сослался бы на доктора David Dailey как на самый потрясающий SVG / информация о JS, которую Вы найдете http://srufaculty.sru.edu/david.dailey/svg/

3
ответ дан 30 November 2019 в 00:52
поделиться

Я исследовал svg JavaScripts. См. блог: Масштабирование Графика SVG с JavaScripts

1
ответ дан 30 November 2019 в 00:52
поделиться

Также посмотрите jQuery плагин SVG

1
ответ дан 30 November 2019 в 00:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: