Estoy usando una plataforma de código bajo basada en Flutter para desarrollar mi aplicación y esa plataforma tiene widgets incorporados como (widget de WebView "acepta URL") y planeo usarlo para mostrar widgets de Tradingview
el artilugio
singalticker.html Código
<!-- TradingView Widget BEGIN --> <div class="tradingview-widget-container"> <div class="tradingview-widget-container__widget"></div> <div class="tradingview-widget-copyright"><a href="https://www.tradingview.com/symbols/EURUSD/?exchange=FX" rel="noopener" target="_blank"><span class="blue-text">EURUSD Rates</span></a> by TradingView</div> <script type="text/javascript" src="https://s3.tradingview.com/external-embedding/embed-widget-single-quote.js" async> { "symbol": "FX:EURUSD", "width": 350, "colorTheme": "light", "isTransparent": false, "locale": "en" } </script> </div> <!-- TradingView Widget END -->Entonces, logré crear una página html en GitHub y publicarla, luego coloqué su URL en WebView y funciona, PERO lo que estoy preguntando es cómo pasar un valor a través de la URL para cambiar el par.
"symbol": "FX:EURUSD",Entonces, cuando el usuario elige un par de (Stock/Fiat), ¿los cambios en la página html dependen de eso? ¡He intentado seguir varias soluciones aquí pero nada funciona!
Cualquier ayuda en este asunto será apreciada gracias
Con esto, puede obtener la variable de consulta de la cadena de URL;
// add this function in your page script function GetQueryVar(variable) { var query = window.location.search.substring(1) var vars = query.split('&') for (var i = 0; i < vars.length; i++) { var qPair = vars[i].split('='); if (decodeURIComponent(qPair[0]).toLowerCase() == variable.toLowerCase()) return decodeURIComponent(qPair[1]); } }Cómo utilizar:
// url is: https://siteurl.com/page?fx=EURUSD const fx = GetQueryVar('FX') // fx == 'EURUSD'ACTUALIZAR 1
<body> <div class="tradingview-widget-container"> <div class="tradingview-widget-container__widget"></div> <div class="tradingview-widget-copyright" id="view"></div> </div> <script type="text/javascript"> function getParameterByName(name, url = window.location.href) { name = name.replace(/[\[\]]/g, '\\$&'); var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'), results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, ' ')); } const container = document.getElementById("view") const symbol = getParameterByName('fx') document.addEventListener('DOMContentLoaded', function () { var iframe = document.createElement('iframe') iframe.setAttribute( 'src', `https://s.tradingview.com/embed-widget/single-quote#{"width":350,"symbol":"FX:${symbol}","isTransparent":false,"height":126,"utm_source":"","utm_medium":"widget","utm_campaign":"single-quote"}`, ); iframe.setAttribute('scrolling', 'no') iframe.setAttribute('allowtransparency', 'true') iframe.setAttribute('frameborder', 0) iframe.setAttribute('style', 'box-sizing: border-box; height: calc(94px); width: 350px;') container.appendChild(iframe) }); </script> </div> </body>