2015-05-06 42 views
4

如何使克隆标记对象与svg图像数据在一个页面中。没有很多获取服务器的方法。目标页面如何用一个get方法克隆标签对象?

<!DOCTYPE html> 
... 
<object id="tg0" data="graph.svg" type="image/svg+xml" some_my_value="234"></object> 
<object id="tg1" data="graph.svg" type="image/svg+xml" some_my_value="123"></object> 
... 

的 示例此示例获取graph.svg许多GET请求graph.svg。第一个请求显示结果200以下显示结果304,但我需要没有以下一次。

我发现attr声明,但是下一个代码在#tg1中不工作。

<object declare id="tg0" data="graph.svg" type="image/svg+xml"></object> 
<object id="tg1" type="image/svg+xml"> 
    <param valuetype="object" value="#tg0"> 
</object> 

用数据attr,tg1发送下面的get请求。

我该如何在html,wo js中做到这一点。是否有可能通过相对URI(如xpath)从当前页面接收数据。

graph.svg是自我渲染图像。它可以在div中用于影子根(现在不是变体)。 如果可以是一种方法 - 使用JS,我可以如何将XMLHttpRequesst结果放入标记对象的文档中?

构造元素像document.querySelector(“...”)。 contentWindow/contentDocument/document/window/innerHTML = ... 不会。

如果js - 需要在纯js的jquery和其他框架中解决。火狐/ Chrome浏览器。

回答

0

我找到一个解决方案,与DOM的框架

<object id="tg0" data="graph.svg" type="image/svg+xml"></object> 
<!--tg0 can be iframe--> 

<iframe id="tg1" class="tg" type="image/svg+xml"></iframe> 
<object id="tg2" class="tg" type="image/svg+xml"></object> 
<!--iframe Firefox and Chrome; object work in Chrome only-->  

<script> 
    //some control to onload current page and #tg0 

    //We can get data from tag object or iframe 
    var tg0_TXT=window.frames['tg0'].contentDocument.rootElement.outerHTML; 

    //Or get it from XMLHttpRequest 
    var dataReq = new XMLHttpRequest(); 
    //... 
    var tg0_TXT=dataReq.responseText; 


    var trgIframes=document.querySelectorAll(".tg"); 
    for(var ic0=0; ic0<trgIframes.length; ic0++) { 
     //Select id, because window.frames works with id 
     var idc=trgIframes[ic0].id; 

     //Firefox doesnt want write in empty contentDocument in object 
     //so #tg2 in Firefox is empty 
     if(window.frames[idc].contentDocument) { 
      //wo open/close scripts inside svg doesn't starts 
      window.frames[idc].contentDocument.open(); 
      window.frames[idc].contentDocument.write(tg0_TXT); 
      window.frames[idc].contentDocument.close(); 
     } 
    } 
}; 
</script> 

我们可以效仿内侧frameElement.declare和window.parent.frames [ “...”] SVG声明

0

是的。您可以创建的object tag,您可以使用clone。 请按照演示链接。

DEMO

+0

它发送以下请求与结果304 –

+0

其工作罚款在小提琴... –

+0

简单的克隆是没有问题的。 问题 - 当对象有克隆时,很多请求到服务器。 –