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'
});
});