如何获取TradingView小部件中选中交易标的的对应链接?
TradingView高级图表小部件获取当前品种对应链接实现方案
TradingView高级图表小部件未直接提供获取品种详情链接的公开接口,可通过小部件原生跨域通信能力+固定链接规则实现,纯JS即可完成,无需修改小部件源码。
- 监听品种变更事件
小部件运行在iframe中,用户切换交易品种时会通过postMessage向父页面推送事件,事件中携带带交易所前缀的完整品种标识。父页面添加全局消息监听即可捕获:window.addEventListener('message', (e) => { // 过滤非TradingView来源的消息,避免干扰 if (e.origin !== 'https://s.tradingview.com') return if (e.data?.name === 'symbolChange') { const fullSymbol = e.data.data // 格式示例:NASDAQ:TSLA、BINANCE:BTCUSDT const targetLink = buildSymbolLink(fullSymbol) // 此处写入拿到链接后的业务逻辑 console.log('当前品种链接', targetLink) } }) - 按固定规则拼接链接
TradingView品种详情页路径规则统一,将完整品种标识中的冒号替换为横杠,拼接至固定前缀即可得到对应链接,转换逻辑如下:function buildSymbolLink(fullSymbol) { const pathStr = fullSymbol.replace(':', '-') return `https://www.tradingview.com/symbols/${pathStr}/` }
避坑提示:不要尝试直接读取iframe内部DOM获取品种信息,跨域安全策略会直接拦截这类操作,
postMessage是官方支持的唯一合法通信方式。
补充说明:小部件初始化加载默认品种时不会触发symbolChange事件,初始状态的品种链接直接用你初始化时传入的默认symbol参数,按上述相同规则生成即可。所有品类(股票、加密货币、外汇、期货、指数)都适配这套拼接规则,无需单独做特殊映射。
内容的提问来源于stack exchange,提问作者Tomasz
相关产品推荐
相关产品推荐

