HTML-элементный тег onDataLoad [дубликат]

Эти шаги работают для меня:

  1. Загрузите Rcpp вручную из WebSite ( https://cran.r-project.org/web/packages/Rcpp/index.html )
  2. распаковать папку / файлы в папку «Rcpp»
  3. Найти папку «library» в каталоге R install Ex: C:\r\r-3.3. 1 \ library
  4. Скопируйте папку «Rcpp» в папку «Библиотека».

Хорошо идти !!!

library(Rcpp)
library(ggplot2) 

32
задан Ilya 3 December 2008 в 17:26
поделиться

7 ответов

Вы можете назначить обработчик события onload для элемента в вашем документе SVG и вызвать вызов функции javascript на странице html. onload для SVGLoad.

http://www.w3.org/TR/SVG11/interact.html#LoadEvent

Событие запускается в точке, где пользовательский агент полностью проанализировал элемент и его потомков и готов действовать соответствующим образом по этому элементу

-5
ответ дан Mocky 19 August 2018 в 17:56
поделиться
  • 1
    Нет, я не могу редактировать документ SVG. Я просто могу манипулировать им, когда находится на веб-странице. – alexmeia 3 December 2008 в 15:40
  • 2
    Да, это работает. Не думал о решении тайм-аута ... Спасибо человеку. – alexmeia 3 December 2008 в 16:15
  • 3
    Опрос - не лучший способ сделать это. Вместо этого используйте прослушиватель событий «load». – Erik Dahlström 18 August 2010 в 10:09
  • 4
    @ ErikDahlström load прослушиватель событий имеет проблемы. – Flimm 17 October 2017 в 13:26
-4
ответ дан Mocky 31 October 2018 в 04:27
поделиться

С помощью jQuery вы можете привязываться к событию загрузки окна, которое Erik упоминает с помощью:

$(window).load(function(){
    var svg = document.getElementById("chart").getSVGDocument();
});
2
ответ дан Boermans 19 August 2018 в 17:56
поделиться
  • 1
    Я так думаю, вы можете знать, когда объект SVG загружается на html-страницу, но вы все еще не знаете, готова ли DOM SVG. – alexmeia 24 November 2010 в 16:25
  • 2
    Я нашел, что это работает, когда я встраивал jquery в автономный SVG - спасибо! – Vadi 12 December 2013 в 01:25

Предполагая, что ваш SVG находится в теге <embed>:

<embed id="embedded-image" src="image.svg" type="image/svg+xml" />

SVG-изображение по существу находится в суб-документе, который будет иметь отдельное событие load с событием основного document ]. Тем не менее, вы можете прослушать это событие и обработать его:

var embed = document.getElementById("embedded-image");
embed.addEventListener('load', function()
{
    var svg = embed.getSVGDocument();
    // Operate upon the SVG DOM here
});

Это лучше, чем опрос, поскольку любые изменения, которые вы делаете для SVG, произойдут до того, как они будут сначала нарисованы, что уменьшит мерцание и затраты на процессор, потраченные на рисование .

8
ответ дан Drew Noakes 19 August 2018 в 17:56
поделиться
  • 1
    Для работы с JQuery на заданном элементе do smth выглядит так: var svg = $ (embed.getSVGDocument (). DocumentElement); – BasTaller 25 January 2018 в 15:12

В вашем элементе внедрения (например, «embed», «object», «iframe») в основном документе добавьте атрибут onload, который вызывает вашу функцию, или добавьте прослушиватель событий в скрипт, например embeddingElm.addEventListener('load', callbackFunction, false). Другим вариантом может быть прослушивание DOMContentLoaded, зависит от того, для чего вы хотите.

Вы также можете добавить слушателя загрузки в основной документ. jQuery(document).ready не означает, что загружаются все ресурсы, только что сам документ имеет DOM, который готов к действию. Однако обратите внимание, что если вы прослушиваете загрузку всего документа, функция обратного вызова не будет вызываться до тех пор, пока не будут загружены все ресурсы в этом документе, css, javascript и т. Д.

Если вы используете inline svg, тогда jQuery(document).ready будет работать только отлично.

В следующем примечании вы можете рассмотреть возможность использования embeddingElm.contentDocument (если доступно) вместо embeddingElm.getSVGDocument().

22
ответ дан Erik Dahlström 19 August 2018 в 17:56
поделиться
  • 1
    embeddingElm.addEventListener ('load', callbackFunction, false) не будет работать, если embeddingElm уже загружен при запуске скрипта. DOMContentLoaded не будет работать, если вы связали изображение в SVG (например, фоновое изображение). Вы не должны делать: что-то похожее на: window.onload либо, потому что тогда вам придется ждать, пока все ваши внешние ресурсы будут загружены (например, сценарии отслеживания и рекламы) – jBoive 11 August 2015 в 21:46
  • 2
    Вы также знаете, как запускать этот прослушиватель событий нагрузки на объекте SVG в Угловом тесте? – Frank van Wijk 26 August 2015 в 13:32
  • 3
    В Safari, если содержимое SVG уже загружено, load никогда не запускается. – Flimm 17 October 2017 в 13:44
  • 4
    будет работать onload, если вы измените документ SVG, присвоенный чему-то вроде DIV, который заставляет этот документ загружаться? Это все ", когда мы знаем, что DOM и контент истинно загружены, так что можно назвать определенные ECMAscript fucntions, определенные в SVG, или запросить DOM по-прежнему, по-видимому, является заявлением о хите / пропуске в 2018 году на основании того, что я слышу от некоторых людей. – Minok 13 June 2018 в 19:27

Вы можете использовать событие onload для проверки.

Предположим, что some.svg встроен в тег объекта:

<body>    
<object id="svgholder" data="some.svg" type="image/svg+xml""></object>
</body>

JQuery

var svgholder = $('body').find("object#svgholder");

svgholder.load("image/svg+xml", function() {
    alert("some svg loaded");
});

javascript

var svgholder = document.getElementById("svgholder");

svgholder.onload = function() {
    alert("some svg loaded");
}
11
ответ дан Roshan Poudyal 19 August 2018 в 17:56
поделиться
  • 1
    Примечание: Используйте вместо onload функцию addEventListener('load', handler), чтобы не переопределять другие обработчики нагрузки. Однако это не поддерживается древними браузерами. Вопрос: jQuery's load был первым методом, который я пытался использовать, но без 'image/svg+xml' в качестве первого аргумента он не будет работать. Можете ли вы объяснить эту магию? Я не мог найти объяснения в документации jQuery. Он просто упоминает аргумент как url (и здесь мы приводим MIME-тип). И снова, почему нам не нужна такая вещь для onload? – Neon 13 December 2016 в 12:53
  • 2
    Я думаю, можно с уверенностью сказать, что если вы предполагаете, что браузер способен отображать встроенные SVG, вы можете быть уверены, что он реализует addEventListener. – Niavlys 11 March 2017 в 16:06
  • 3
    svgholder.load("image/svg+xml", function()... вместо этого ссылается на загрузку jquery ajax. До v3.0 jquery определял, какую загрузку вызывать на основе предоставленных аргументов. С помощью строки в первом аргументе jquery пытается сделать GET для «image / svg + xml» в качестве URL-адреса. Поскольку он помещает загруженный контент в выбранный элемент, затем вызывает предоставленный обратный вызов, он может работать как загруженное уведомление, но он делает что-то еще. Ищите 404 в консоли. Кроме того, обработчик события .load устарел с 3.0. – Mnebuerquo 5 April 2017 в 19:23

Событие загрузки элемента внедрения (например, объекта) было бы моим преимуществом, но если это почему-то не является жизнеспособным решением, единственный общий и надежный тест, который я нашел для SVG DOM, - это метод getCurrentTime корневого элемента SVG:

var element = document.getElementById( 'elementId' );
var svgDoc = element.contentDocument;
var svgRoot = svgDoc ? svgDoc.rootElement : null;

if ( svgRoot
    && svgRoot.getCurrentTime
    && ( svgRoot.getCurrentTime() > 0 ))
{
    /* SVG DOM ready */
}

В рекомендации W3C SVG указано, что getCurrentTime на SVGSVGElement:

Возвращает текущее время в секундах относительно времени начала для текущего фрагмента документа SVG. Если getCurrentTime вызывается до начала временной шкалы документа (например, скриптом, запущенным в элементе «script» до отправки события SVGLoad документа), возвращается 0.

3
ответ дан Terence Bandoian 19 August 2018 в 17:56
поделиться
Другие вопросы по тегам:

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