aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/container.js19
-rw-r--r--src/doc.js56
-rw-r--r--src/svg.js4
3 files changed, 46 insertions, 33 deletions
diff --git a/src/container.js b/src/container.js
index 41b5f09..14ad570 100644
--- a/src/container.js
+++ b/src/container.js
@@ -125,25 +125,6 @@ SVG.Container = {
this.node.removeChild(this.node.lastChild);
return this;
- },
- // Hack for safari preventing text to be rendered in one line.
- // Basically it sets the position of the svg node to absolute
- // when the dom is loaded, and resets it to relative a few milliseconds later.
- stage: function() {
- var check, element = this;
-
- check = function() {
- if (document.readyState === 'complete') {
- element.attr('style', 'position:absolute;');
- setTimeout(function() { element.attr('style', 'position:relative;'); }, 5);
- } else {
- setTimeout(check, 10);
- }
- };
-
- check();
-
- return this;
}
}; \ No newline at end of file
diff --git a/src/doc.js b/src/doc.js
index 0785579..7afea7a 100644
--- a/src/doc.js
+++ b/src/doc.js
@@ -4,13 +4,10 @@
SVG.Doc = function Doc(element) {
this.constructor.call(this, SVG.create('svg'));
- /* create an extra wrapper */
- var wrapper = document.createElement('div');
- wrapper.style.cssText = 'position:relative;width:100%;height:100%;';
-
/* ensure the presence of a html element */
- if (typeof element == 'string')
- element = document.getElementById(element);
+ this.parent = typeof element == 'string' ?
+ document.getElementById(element) :
+ element;
/* set svg element attributes and create the <defs> node */
this.
@@ -18,16 +15,51 @@ SVG.Doc = function Doc(element) {
attr('xlink', SVG.xlink, SVG.ns).
defs();
- /* add elements */
- element.appendChild(wrapper);
- wrapper.appendChild(this.node);
-
/* ensure correct rendering for safari */
- this.stage();
+ this.stage();
};
// Inherits from SVG.Element
SVG.Doc.prototype = new SVG.Element();
// Include the container object
-SVG.extend(SVG.Doc, SVG.Container); \ No newline at end of file
+SVG.extend(SVG.Doc, SVG.Container);
+
+// Hack for safari preventing text to be rendered in one line.
+// Basically it sets the position of the svg node to absolute
+// when the dom is loaded, and resets it to relative a few milliseconds later.
+SVG.Doc.prototype.stage = function() {
+ var check,
+ element = this,
+ wrapper = document.createElement('div');
+
+ /* set temp wrapper to position relative */
+ wrapper.style.cssText = 'position:relative;height:100%;';
+
+ /* put element into wrapper */
+ element.parent.appendChild(wrapper);
+ wrapper.appendChild(element.node);
+
+ /* check for dom:ready */
+ check = function() {
+ if (document.readyState === 'complete') {
+ element.attr('style', 'position:absolute;');
+ setTimeout(function() {
+ /* set position back to relative */
+ element.attr('style', 'position:relative;');
+
+ /* remove temp wrapper */
+ element.parent.removeChild(element.node.parentNode);
+ element.node.parentNode.removeChild(element.node);
+ element.parent.appendChild(element.node);
+
+ }, 5);
+ } else {
+ setTimeout(check, 10);
+ }
+ };
+
+ check();
+
+ return this;
+}; \ No newline at end of file
diff --git a/src/svg.js b/src/svg.js
index 6867461..eb5f348 100644
--- a/src/svg.js
+++ b/src/svg.js
@@ -7,8 +7,8 @@
// Shortcut for creating a svg document
-this.svg = function(e) {
- return new SVG.Doc(e);
+this.svg = function(element) {
+ return new SVG.Doc(element);
};
// The main wrapping element