从iframe更改背景

时间:2018-05-10 10:40:42

标签: javascript html api

即时通讯使用Sketchfab API,我想更改iframe内的背景。我的代码只能显示3D模型的正确信息或更改背景,但不能同时显示两者。如果有人可以看看我说些什么...... 对不起,我的英语不好,谢谢。 这是jQuery的一部分



<script>
	$(document).ready(function(){
  $('.dropdown-submenu a.test').on("click", function(e){
    $(this).next('ul').toggle();
    e.stopPropagation();
    e.preventDefault();
  });
});
  $(switchBackground);
var oFReader = new FileReader(),
    rFilter = /^(?:image\/bmp|image\/cis\-cod|image\/gif|image\/ief|image\/jpeg|image\/jpeg|image\/jpeg|image\/pipeg|image\/png|image\/svg\+xml|image\/tiff|image\/x\-cmu\-raster|image\/x\-cmx|image\/x\-icon|image\/x\-portable\-anymap|image\/x\-portable\-bitmap|image\/x\-portable\-graymap|image\/x\-portable\-pixmap|image\/x\-rgb|image\/x\-xbitmap|image\/x\-xpixmap|image\/x\-xwindowdump)$/i;

oFReader.onload = function(oFREvent) {
    localStorage.setItem('b', oFREvent.target.result);
    switchBackground();
};
function switchBackground() {
  var backgroundImage = localStorage.getItem('b');
  if (backgroundImage) {
    $('iframe').css('background-image', 'url(' + backgroundImage + ')');   
  } 
}
function loadImageFile(testEl) {
  if (! testEl.files.length) { return; }
  var oFile = testEl.files[0];
  if (!rFilter.test(oFile.type)) { alert("You must select a valid image file!"); return; }
  oFReader.readAsDataURL(oFile);
}
	</script>
&#13;
&#13;
&#13;

这是HTML部分:

&#13;
&#13;
<body>
<iframe class="visor" id= "visor" style= "border:0" src=" 

transparent=1&amp;
" 
  
  width="500" height="300"    >
    
            </iframe>
<div class="container">



  <div id="elmenu" class="btn-group">
    <button type="button" class="btn btn-ttc" data-toggle="dropdown">
      Reja <span class="caret"></span></button>
      <ul class="dropdown-menu" role="menu">
        <button class="secundarios" id="R1"><img src="https://i.imgur.com/rxwVStQ.png" width="50px" height="50px" ></img></button>
		<button class="secundarios" id="R2"><img src="https://i.imgur.com/pNmbRna.png" width="50px" height="50px" ></img></button>
      </ul>
    <div id="elmenu" class="btn-group">
      <button type="button" class="btn btn-ttc" data-toggle="dropdown">
      Adornos arriba <span class="caret"></span></button>
      <ul class="dropdown-menu" role="menu">
		  <button class="secundarios" id="AAR1"><img src="https://i.imgur.com/3ij52Qo.png" width="50px" height="50px" ></img></button>
		  <button class="secundarios" id="AAR2"><img src="https://i.imgur.com/ABHPWKx.png" width="50px" height="50px" ></img></button>
		  <button class="secundarios" id="AARN"><img src="https://i.imgur.com/Wz2YimL.png" width="50px" height="50px" ></img></button>
      </ul>
	  <div id="elmenu" class="btn-group">
      <button type="button" class="btn btn-ttc" data-toggle="dropdown">
      Adornos medio <span class="caret"></span></button>
      <ul class="dropdown-menu" role="menu">
		  <button class="secundarios" id="SIN"><img src="https://i.imgur.com/rF60Iar.jpg" width="50px" height="50px" ></img></button>
		  <button class="secundarios" id="AM"><img src="https://i.imgur.com/9Kzit2d.png" width="50px" height="50px" ></img></button>
		  <button class="secundarios" id="AMC"><img src="https://i.imgur.com/g66ylts.png" width="50px" height="50px" ></img></button>
		  <button class="secundarios" id="AC"><img src="https://i.imgur.com/416XksG.png" width="50px" height="50px" ></img></button>		  
      </ul>
	  <div id="elmenu" class="btn-group">
      <button type="button" class="btn btn-ttc" data-toggle="dropdown">
      Adornos abajo <span class="caret"></span></button>
      <ul class="dropdown-menu" role="menu">
		  <button class="secundarios" id="AAB1"><img src="https://i.imgur.com/3ij52Qo.png" width="50px" height="50px" ></img></button>
		  <button class="secundarios" id="AAB2"><img src="https://i.imgur.com/ABHPWKx.png" width="50px" height="50px" ></img></button>
		  <button class="secundarios" id="AABN"><img src="https://i.imgur.com/Wz2YimL.png" width="50px" height="50px" ></img></button>
      </ul>
	  <div id="elmenu" class="btn-group">
    <button type="button" class="btn btn-ttc" data-toggle="dropdown">
      Cambiar fondo <span class="caret"></span></button>
      <ul class="dropdown-menu" role="menu">        
	<input class="inputfile" id="test" type="file" onchange="loadImageFile(this)" ></input>
      </ul>
    </div>
  </div>
</div>
</div>
  </div>
</div>

    
    <!-- Initialize the viewer -->
    <script type="text/javascript">
    var iframe = document.getElementById('visor'); 
      urlid = '47e0f04b958748a5880e35090d0775f0';
	  

    // By default, the latest version of the viewer API will be used.
    
     
	//declarar un nodo con el nombre que quieras
var buttonReja1 = document.getElementById( 'R1' ),
            buttonReja2 = document.getElementById( 'R2' ),
            buttonAdornoarriba1 = document.getElementById( 'AAR1' ),
			buttonAdornoarriba2 = document.getElementById( 'AAR2' ),
			buttonAdornoarribaNo = document.getElementById( 'AARN' ),
            buttonAdornomedio = document.getElementById( 'AM' ),
            buttonAdornoabajo1 = document.getElementById( 'AAB1' ),
			buttonAdornoabajo2 = document.getElementById( 'AAB2' ),
			buttonAdornoabajoNo = document.getElementById( 'AABN' ),
			buttonAdornomedio2 = document.getElementById('AMC'),
			buttonAdornoCirculos = document.getElementById('AC'),
			buttonSinAdornos = document.getElementById('SIN'),
			
            // Nodes
            nodeReja1,
            nodeReja2,
            nodeAdornosArriba1,
			nodeAdornosArriba2,
			nodeAdornoMedio,
            nodeAdornoAbajo1,
            nodeAdornoAbajo2,
			nodeAdornoMedio2,
			nodeCirculos,
            // Objects
            objReja1 = 'reja1 pos1',
            objReja2 = 'reja2 pos1',
            objAdornoArriba1 = 'adornoarriba1 pos1',
			objAdornoArriba2 = 'adornoarriba2 pos1',
			objAdornoMedio = 'adornomedio pos1',
            objAdornoAbajo1 = 'adornoabajo1 pos1',
            objAdornoAbajo2 = 'adornoabajo2 pos1',
			objAdornoMedio2 = 'Torus001',
			objAdornoCirculos = 'adornoscirculos',         
      //lo mismo para el otro objeto
 
    // Alternatively, you can request a specific version.
      client = new Sketchfab( '1.0.0', iframe );

    client.init( urlid, {
        success: function onSuccess( api ){
            api.start();
            api.addEventListener( 'viewerready', function() {

                // API is ready to use
                // Insert your code here
                console.log( 'Viewer is ready' );
			
              api.getNodeMap( function ( err, nodes ) {
    if ( !err ) {
        console.log(nodes);
      for(var prop in nodes){
        if(nodes.hasOwnProperty(prop)){
         
 if ( nodes.hasOwnProperty( prop ) ) {
                                    // Check nodes against object names
                                    if ( nodes[ prop ].name === objReja2 ) {
                                        nodeReja2 = nodes[prop].instanceID;
                                        console.log( nodeReja2 );                       
                                    }
                                      else  if ( nodes[ prop ].name === objReja1 ) {
                                        nodeReja1 = nodes[prop].instanceID;
                                        console.log(nodeReja1);
                                      }
											else  if ( nodes[ prop ].name === objAdornoArriba1 ) {
												nodeAdornosArriba1 = nodes[prop].instanceID;
												console.log( 'red head node: ' + nodeAdornosArriba1 );										
											}
													else  if ( nodes[ prop ].name === objAdornoArriba2 ) {
														nodeAdornosArriba2 = nodes[prop].instanceID;
														console.log( 'red head node: ' + nodeAdornosArriba2);										
													}
															else  if ( nodes[ prop ].name === objAdornoMedio ) {
																nodeAdornoMedio = nodes[prop].instanceID;
																console.log( 'red head node: ' + nodeAdornoMedio);
															}
																	else  if ( nodes[ prop ].name === objAdornoAbajo1 ) {
																		nodeAdornoAbajo1 = nodes[prop].instanceID;
																		console.log( 'red head node: ' + nodeAdornoAbajo1);
																	}
																			else  if ( nodes[ prop ].name === objAdornoAbajo2 ) {
																				nodeAdornoAbajo2 = nodes[prop].instanceID;
																				console.log( 'red head node: ' + nodeAdornoAbajo2);
																			}
																				else  if ( nodes[ prop ].name === objAdornoMedio2 ) {
																					nodeAdornoMedio2 = nodes[prop].instanceID;
																					console.log( 'red head node: ' + nodeAdornoMedio2);
																				}
																					else  if ( nodes[ prop ].name === objAdornoCirculos ) {
																						nodeCirculos = nodes[prop].instanceID;
																						console.log( 'red head node: ' + nodeCirculos);
																					}
            //button event
            buttonAdornoarriba1.addEventListener( 'click', function() {                                          
                                            api.hide(nodeAdornosArriba2);
                                            api.show(nodeAdornosArriba1);		
                                        });
                                    }
									buttonAdornoarriba2.addEventListener( 'click', function() {  
                                            api.hide(nodeAdornosArriba1);
                                            api.show(nodeAdornosArriba2);			
                                        });
                                    }
									buttonAdornoarribaNo.addEventListener( 'click', function() {                                          
                                            api.hide(nodeAdornosArriba1);
                                            api.hide(nodeAdornosArriba2);											
                                        });
                                    }
									buttonAdornoabajo1.addEventListener( 'click', function() {                                          
                                            api.hide(nodeAdornoAbajo2);
                                            api.show(nodeAdornoAbajo1);						
                                        });
                                    }
									buttonAdornoabajo2.addEventListener( 'click', function() {                                           
                                            api.hide(nodeAdornoAbajo1);
                                            api.show(nodeAdornoAbajo2);											
                                        });
                                    })
									buttonAdornoabajoNo.addEventListener( 'click', function() {
                                           
                                            api.hide(nodeAdornoAbajo2);
                                            api.hide(nodeAdornoAbajo1);											
                                        });
                                    									   
									buttonReja1.addEventListener( 'click', function() {     
                                            api.hide(nodeReja2);
                                            api.show(nodeReja1);
                                        });
                                    buttonReja2.addEventListener( 'click', function() {  
                                            api.hide(nodeReja1);
                                            api.show(nodeReja2);
                                        });
									buttonAdornoCirculos.onclick =  function(){
										let exterior = true;
										return () => {
										if (exterior) api.hide(nodeCirculos);
										else api.show(nodeCirculos);
										exterior = !exterior;
											 };
										}();
										buttonAdornomedio.addEventListener( 'click', function() { 
                                            api.hide(nodeAdornoMedio2);
                                            api.show(nodeAdornoMedio);
                                        });
                                    buttonSinAdornos.addEventListener( 'click', function() {
                                            api.hide(nodeAdornoMedio2);
                                            api.hide(nodeAdornoMedio);
											api.hide(nodeCirculos);
                                        });
                                    buttonAdornomedio2.onclick =  function(){
										let adorno = true;
										return () => {
										if (adorno) api.hide(nodeAdornoMedio2);
										else api.show(nodeAdornoMedio2);
										adorno = !adorno;
											 };
										}();
										buttonAdornomedio.onclick =  function(){
										let adorno1 = true;
										return () => {
										if (adorno1) api.hide(nodeAdornoMedio);
										else api.show(nodeAdornoMedio);
										adorno1 = !adorno1;
											 };
										}();
});
   
     
                                        }
          

          
                                        })
                                        
    </script>
&#13;
&#13;
&#13;

我也留下了整个代码:https://gist.github.com/TechnoOscuro/cc4556dd484e89b2b03d43a06a8b6254#file-sketchfabapitest-html

0 个答案:

没有答案