function injectTradingViewWidget(targetSelector, config = {}) { const target = document.querySelector(targetSelector); if (!target) { console.warn(`[TradingView] Target "${targetSelector}" not found.`); return; } if (target.querySelector('.tradingview-widget-container')) { console.warn('[TradingView] Widget already injected, skipping.'); return; } const defaults = { symbol: 'TVC:GOLD', colorTheme: 'dark', isTransparent: false, locale: 'en', width: '350' }; const settings = { ...defaults, ...config }; const wrapper = document.createElement('div'); wrapper.className = 'tradingview-widget-container'; wrapper.setAttribute('data-tv-injected', 'true'); const widgetDiv = document.createElement('div'); widgetDiv.className = 'tradingview-widget-container__widget'; const credit = document.createElement('div'); credit.className = 'tradingview-widget-copyright'; credit.innerHTML = ` GOLD quote by TradingView`; const script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'https://s3.tradingview.com/external-embedding/embed-widget-single-quote.js'; script.async = true; script.innerHTML = JSON.stringify(settings); script.addEventListener('error', () => { console.error('[TradingView] Failed to load widget script.'); }); wrapper.append(widgetDiv, credit, script); target.appendChild(wrapper); } document.addEventListener('DOMContentLoaded', () => { injectTradingViewWidget('#widget-container', { colorTheme: 'light', width: '400' }); });