如何彻底阻止TradingView在本地存储写入数据?残留项待解决
问题
我当前使用以下代码配置TradingView Widget:
let defaultProps = { fullscreen: true, symbol: 'BTC', interval: constantValues.timeFrameToInterval(timeframe), container: "tv_coin_chart", library_path: "/charting_library/", locale: "en", }; const widgetOptions = { symbol: symbol || defaultProps.symbol, // BEWARE: no trailing slash is expected in feed URL datafeed: new window.Datafeeds.UDFCompatibleDatafeed( constantValues.CHART_DATA_FEED ), interval: defaultProps.interval, container: "tv_coin_chart", library_path: '/charting_library/', locale: 'en', disabled_features: [ 'use_localstorage_for_settings', 'save_chart_properties_to_local_storage', 'google_analytics', 'header_screenshot', 'header_saveload', 'timeframes_toolbar', 'items_favoriting', 'localstorage', ], chart_storage_url: 'http://saveload.tradingview.com', charts_storage_api_version: '1.0', load_last_chart: false, client_id: 'xxx.trade', user_id: 'userId', settings_adapter: { initialSettings: {}, setValue: function (key, value) { // }, removeValue: function (key) { }, }, save_load_adapter: { }, autosize: true, theme: themeQuery || theme.palette.mode }; const tvWidget = new window.TradingView.widget(widgetOptions); window.tvWidget = tvWidget;
目前大部分数据已不再写入本地存储,但仍有三项内容残留:
tv.logger.loglevel tvlocalstorage.available tv.logger.logHighRate
我已通过配置以下属性阻止了大部分Cookies/本地存储写入:
disabled_features: [ 'use_localstorage_for_settings', 'save_chart_properties_to_local_storage', 'google_analytics', 'header_screenshot', 'header_saveload', 'timeframes_toolbar', 'items_favoriting', 'localstorage', ], settings_adapter: { initialSettings: {}, setValue: function (key, value) { // }, removeValue: function (key) { }, },
但仍无法清除这三项残留,请问是否有遗漏的配置项,或是否存在其他解决方法(包括临时修复)?
解决方案
一、补充配置项调整
这三个残留项属于TradingView内部日志和存储可用性检测相关内容,可在disabled_features中新增两个配置项直接拦截:
logging:禁用内部日志系统,阻止日志级别相关存储项生成localstorage_availability_check:禁止库检测本地存储可用性,避免生成tvlocalstorage.available
更新后的disabled_features数组:
disabled_features: [ 'use_localstorage_for_settings', 'save_chart_properties_to_local_storage', 'google_analytics', 'header_screenshot', 'header_saveload', 'timeframes_toolbar', 'items_favoriting', 'localstorage', 'logging', // 新增:禁用日志系统 'localstorage_availability_check' // 新增:禁用本地存储可用性检测 ],
二、临时修复方案
如果上述配置不生效,可在Widget初始化完成后主动清除并监听拦截:
// 监听图表加载完成事件 tvWidget.onChartReady(function() { // 清除已存在的残留项 localStorage.removeItem('tv.logger.loglevel'); localStorage.removeItem('tvlocalstorage.available'); localStorage.removeItem('tv.logger.logHighRate'); // 监听localStorage变化,防止后续重复写入 window.addEventListener('storage', function(e) { const blockedKeys = ['tv.logger.loglevel', 'tvlocalstorage.available', 'tv.logger.logHighRate']; if (blockedKeys.includes(e.key)) { localStorage.removeItem(e.key); } }); });
三、额外优化建议
如果不需要云端存储功能,可直接移除chart_storage_url、charts_storage_api_version相关配置,减少不必要的存储交互;另外部分旧版本TradingView库对禁用项支持有差异,可尝试升级到最新稳定版。
内容的提问来源于stack exchange,提问作者Ice Wine
相关产品推荐
相关产品推荐

