Greasy Fork

Greasy Fork is available in English.

雪球助手

愉快地在雪球、理性仁等网站之间玩耍(跳转)

当前为 2017-12-24 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         雪球助手
// @namespace    http://tampermonkey.net/
// @version      1.1
// @description  愉快地在雪球、理性仁等网站之间玩耍(跳转)
// @author       小紫baby
// @include      /^https:\/\/(xueqiu|www\.lixinger)+\.com.*/
// @grant        none
// ==/UserScript==

/*eslint-disable*/
(function () {
    'use strict'

    var hkStockTemplateUrl = 'https://www.lixinger.com/analytics/company/hk/{0}/detail/fundamental/value'
    var szStockTemplateUrl = 'https://www.lixinger.com/analytics/company/sz/{0}/detail/fundamental/value'
    var szFundTemplateUrl = 'https://www.lixinger.com/analytics/fund/sz/{0}/detail'
    var szIndiceTemplateUrl = 'https://www.lixinger.com/analytics/indice/sz/{0}/detail/value'
    var shStockTemplateUrl = 'https://www.lixinger.com/analytics/company/sh/{0}/detail/fundamental/value'
    var shFundTemplateUrl = 'https://www.lixinger.com/analytics/fund/sh/{0}/detail'
    var shIndiceTemplateUrl = 'https://www.lixinger.com/analytics/indice/sh/{0}/detail/value'

    var regList = [
      // 港股证券
      /^\d{5}$/,
      // 深市证券
      /^SZ(00|01|02|20|30)\d{4}$/,
      // 深市基金
      /^SZ(15|16)\d{4}$/,
      // 深市指数
      // 深证综指,理性仁深圳A股
      /^SZ399106$/,
      /^SZ39\d{4}$/,
      // 沪市证券
      /^SH(600|601|900)\d{3}$/,
      // 沪市基金
      /^SH(510|512)\d{3}$/,
      // 沪市指数
      // 上证指数,理性仁上海A股
      /^SH000001$/,
      /^SH000\d{3}$/
    ]
    var urlList = [
      hkStockTemplateUrl,
      szStockTemplateUrl,
      szFundTemplateUrl,
      'https://www.lixinger.com/analytics/indice/lxr/1000003/detail/value',
      szIndiceTemplateUrl,
      shStockTemplateUrl,
      shFundTemplateUrl,
      'https://www.lixinger.com/analytics/indice/lxr/1000004/detail/value',
      shIndiceTemplateUrl
    ]

    function normalizeCode(code) {
      return code && code.replace(/[a-z]+/gi, '')
    }

    function getLixingrenStockPageUrl(code) {
      var stockCode = normalizeCode(code)
      // 美股不支持
      if (!stockCode) return ''

      for (var i = 0; i < regList.length; i += 1) {
        if (regList[i].test(code)) {
          return urlList[i].replace('{0}', stockCode)
        }
      }

      return ''
    }

    function setHrefAttribute (el, code) {
      var url = getLixingrenStockPageUrl(code)
      if (!url) {
        console.log('不支持的证券代码:' + code)
        return
      }
      el.attr('href', url)
    }

    if (location.host === 'xueqiu.com') {
      /**
       * 主页自选股跳转到理性仁
       */
      var linkSelector = '#optional tr.sortable a.code'
      $(document.body).on('click', linkSelector, function(e) {
          var href = $(this).attr('href')
          if (href.indexOf('www.lixinger.com') > -1) {
            return
          }

          var code = href.replace('/S/', '')
          setHrefAttribute($(this), code)
      })

      /**
       * 兼容旧版主页
       */
      var oldTitleSelector = 'tr[data-symbol] span.title'
      var oldSymbolSelector = 'tr[data-symbol] span.subtitle'
      $(document.body).on('mouseenter', oldTitleSelector, function(e) {
        var code = $(this).parents('tr[data-symbol]').attr('data-symbol')
        $(this).parent().attr('href', '/S/' + code)
      })
      $(document.body).on('mouseenter', oldSymbolSelector, function(e) {
        var code = $(this).parents('tr[data-symbol]').attr('data-symbol')
        setHrefAttribute($(this).parent(), code)
      })

      /**
       * 股票页跳转到理性仁
       */
      var titleSelector = '#app .stock-name'
      $(titleSelector).eq(0).after('<div style="float: left;margin: 0 20px">' +
        '<a class="lxr-icon" target="_blank"><img style="width: 20px;height: 20px;vertical-align: middle" ' +
        ' src="https://www.lixinger.com/static/img/logo50x50.png" style="vertical-align: middle;" /></a></div>')
      $('.lxr-icon').one('mouseenter', function() {
        var code = location.pathname.replace('/S/', '')
        setHrefAttribute($(this), code)
      })
    }
})()