有没有办法定制交易视图自动收报机小部件?

McL*_*odx 3 html javascript css iframe widget

我在tradeview(https://www.tradingview.com/widget/ticker/)中使用这个小部件,想知道是否有办法:

  • a)使滚动条滚动(iFrame滚动=是)
  • b)重新调整小部件的大小.

我之前没有使用过iFrame,也不确定如何进行自定义或者甚至可能进行自定义.

eps*_*n42 6

这是一个达到预期效果的答案:https://codepen.io/epsilon42/pen/BPZgjP/

它主要涉及CSS动画的使用,但也有必要添加一些jQuery来克隆,iframe以便在股票代码运行结束时摆脱差距.由于无法操纵iframe跨域的内容,这是我能想到的唯一方法.

我必须删除asyncTradingView脚本才能$( document ).ready正确触发.

另外需要注意的是,根据您在自动收报机中选择的项目数量,有必要更改CSS中的宽度:

.ticker-canvas {
  width: calc((200px * 15) + 2px);
}
Run Code Online (Sandbox Code Playgroud)

15将上述CSS中的值更改为您在脚本中调用的项目数.200px似乎是小部件决定自动删除项目之前可以使用的最小宽度,但是如果需要,使用更高的值似乎没有任何问题.2px是占用小部件任一侧的1px边框.

HTML:

<!-- TradingView Widget BEGIN -->
<div class="ticker-container">
<div class="ticker-canvas">
<div class="tradingview-widget-container">
  <div class="tradingview-widget-container__widget"></div>
  <script type="text/javascript" src="https://s3.tradingview.com/external-embedding/embed-widget-tickers.js">
  {
  "symbols": [
    {
      "title": "S&P 500",
      "proName": "INDEX:SPX"
    },
    {
      "title": "Nasdaq 100",
      "proName": "INDEX:IUXX"
    },
    {
      "title": "EUR/USD",
      "proName": "FX_IDC:EURUSD"
    },
    {
      "title": "BTC/USD",
      "proName": "BITFINEX:BTCUSD"
    },
    {
      "title": "ETH/USD",
      "proName": "BITFINEX:ETHUSD"
    },
    {
      "description": "Apple",
      "proName": "NASDAQ:AAPL"
    },
    {
      "description": "Berkshire",
      "proName": "NYSE:BRK.A"
    },
    {
      "description": "Microsoft",
      "proName": "NASDAQ:MSFT"
    },
    {
      "description": "Google",
      "proName": "NASDAQ:GOOG"
    },
    {
      "description": "Tesla",
      "proName": "NASDAQ:TSLA"
    },
    {
      "description": "Amazon",
      "proName": "NASDAQ:AMZN"
    },
    {
      "description": "AUD/USD",
      "proName": "OANDA:AUDUSD"
    },
    {
      "description": "Sony",
      "proName": "NYSE:SNE"
    },
    {
      "description": "BHP",
      "proName": "BHP"
    },
    {
      "description": "Telstra",
      "proName": "TLS"
    }
  ],
  "locale": "en"
}
  </script>
</div>
</div>
</div>
<!-- TradingView Widget END -->
<div class="content">
  <p>Some text.</p>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

body {
  margin: 0;
}
.content {
  padding: 10px 20px;
}
.content p {
  font-family: sans-serif;
}

/******/

.ticker-container {
  width: 100%;
  overflow: hidden;
}

.ticker-canvas {
  width: calc((200px * 15) + 2px);
  /* 
  200px = minimum width of ticker item before widget script starts removing ticker codes
  15 = number of ticker codes
  2px = accounts for 1px external border
  */
  -webkit-animation-iteration-count: infinite;
  animation-iteration-count: infinite;
  -webkit-animation-timing-function: linear;
  animation-timing-function: linear;
  -webkit-animation-name: ticker-canvas;
  animation-name: ticker-canvas;
  -webkit-animation-duration: 20s;
  animation-duration: 20s;
}
.ticker-canvas:hover {
  animation-play-state: paused
}

@-webkit-keyframes ticker-canvas {
  0% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    visibility: visible;
  }
  100% {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@keyframes ticker-canvas {
  0% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    visibility: visible;
  }
  100% {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}
.tradingview-widget-container {
  position: relative;
}
.tradingview-widget-container iframe {
    position: absolute;
    top: 0;
}
.tradingview-widget-container iframe:nth-of-type(2) {
  left: 100%;
}
Run Code Online (Sandbox Code Playgroud)

JS:

$( document ).ready(function() {
  $( ".tradingview-widget-container iframe" ).clone().appendTo( ".tradingview-widget-container" );
});
Run Code Online (Sandbox Code Playgroud)


Bha*_*ata 5

你有一个错误的问题,因为这个错误的答案.正确的问题如下:

  • 如何滚动交易视图自动收报机小部件?

我...想知道是否有办法:

  1. 使滚动条滚动(iFrame滚动=是)
  2. 重新调整小部件的大小.

是的,可以使用滚动条滚动和小部件的重新调整大小,但我们不需要这样做iFrame scrolling=yes.

而不是这个,我们iframe用a div和resize滚动这个div元素.换句话说,您可以交易视图自动收报机小部件网站上找到此信息:

描述说我可以使用Ticker Widget显示最多15个符号.为什么我只看到5?

Ticker小部件默认使用Autosize参数.这意味着它接受父元素的宽度.我们的演示页面足够宽,只显示5个符号.您应该使父元素更宽以查看所有符号.

代码示例

function resizeWidget()
{
    var containerTradingview = document.querySelector('#container-tradingview');
    containerTradingview.style.maxWidth = '630px';
}
Run Code Online (Sandbox Code Playgroud)
<center>
<div id="container-tradingview" style="max-width:420px;height:90px;overflow-x:auto;overflow-y:hidden">  
<div style="width:2100px">
<!-- 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" rel="noopener" target="_blank">
            <span class="blue-text">Quotes</span>
        </a> by TradingView
    </div>
    <script type="text/javascript" src="https://s3.tradingview.com/external-embedding/embed-widget-tickers.js" async>
    {
        "symbols":
        [
            {"title": "S&P 500", "proName": "INDEX:SPX"},
            {"title": "Nasdaq 100", "proName": "INDEX:IUXX"},
            {"title": "EUR/USD", "proName": "FX_IDC:EURUSD"},
            {"title": "BTC/USD", "proName": "BITFINEX:BTCUSD"},
            {"title": "ETH/USD", "proName": "BITFINEX:ETHUSD"},
            {"title": "Groupon Inc.", "proName": "NASDAQ:GRPN"},
            {"title": "Walmart Inc.", "proName": "NYSE:WMT"},
            {"title": "Amazon Inc.", "proName": "NASDAQ:AMZN"},
            {"title": "Yelp Inc.", "proName": "NYSE:YELP"},
            {"title": "eBay Inc", "proName": "NASDAQ:EBAY"}
        ],
        "locale": "en"
    }
    </script>
</div>
<!-- TradingView Widget END -->
</div></div>
<br>
<input type="button" value="Resize widget" onclick="resizeWidget()">
</center>
Run Code Online (Sandbox Code Playgroud)

您无法在SO上执行此小部件,因为此代码段中的iframe位于沙箱中.

在codepen.io上查看此示例.