長いタイトルは残念です。私はこの質問を1週間前に公式Salesforceデベロッパーフォーラムに掲載しましたが、それでもまだ回答が得られていないので、私はもっと良い運があるかどうかここで質問したいと思っていました。アナリティクスの埋め込みによるVisualforce navbarオーバーフローの問題の修正方法:reportCharts
私はvisualforceページを持っています。右上隅に埋め込まれたpiechartを追加するまでうまくいきました。
:私はこれらを追加した後、私は、ナビゲーションバーが外にこぼれ始めた、それはここでは、コンテナ(通常、追加のメニュー項目のドロップダウンに自分自身を変換することになっている)だ私のVFコードであることに気づきました私は基本的にすべてのディスプレイにpiechartsの一つを除いて設定のjavascript機能を持っている
ul.tabs {
overflow: hidden;
border-top: none;
border-left: none;
border-right: none;
border-bottom: 3px solid;
border-color: #1797C0;
padding: 0px;
margin: 0px;
margin-bottom: 10px;
}
li.tab {
list-style-type: none;
float: left;
display; inline;
background-color: inherit;
border: none;
outline: none;
cursor: pointer;
padding: 0px;
margin: 0px;
transition: 0.3s;
}
.tabs a {
padding: 5px 10px;
font-weight: bold;
display: inline-block;
background: #fff;
color: #000;
text-decoration: none;
}
.tabs a:hover {
text-decoration: none;
color: #1797C0;
}
.tabs a.active {
background: #1797C0;
color: #fff;
text-decoration: none;
}
.topleft {
float: left;
position: relative;
width: 100%;
margin-bottom: 10px;
}
.topright {
float: right;
position:absolute;
right:10px;
z-index: 11;
}
.piechart {
display: none;
}
.pagelabel {
position: relative;
font-size: 1.5em;
color: #222;
margin: 10px;
}
.saleschart {
width: 90vw;
height: 90vh;
padding-top: 15px;
}
.logo {
display: inline;
float: left;
}
.chartheader {
color: #0000ff;
font-size: 1.3em;
}
.maptotal {
font-size: 1.5em;
color: #222;
display: inline;
float: right;
width: 60%;
}
:ここ
<apex:page controller="SalesGoalsController" sidebar="false">
<apex:stylesheet value="{!$Resource.MapStyles}" />
<apex:includeScript value="{!$Resource.MapSettings}"/>
<apex:includeScript value="{!$Resource.MapTabs}" loadonReady="true"/>
<script type="text/javascript">
// some javascript stuff that initializes some things here
window.onload = function() {
// a bunch of Visualforce.remoting.Manager.invokeAction()
// calls that do not manipulate any elements on the page
// whatsoever and i would never have any reason to suspect
// that this would be what is causing this issue because
// literally all these calls do is populate some arrays
};
</script>
<div class="pagelabel">Maps</div>
<div id="tabsContainer">
<ul class="tabs">
<li class="tab"><a href="#tab1">tab1</a></li>
<li class="tab"><a href="#tab2">tab2</a></li>
</ul>
</div>
<div id="tab1" class="tabcontent">
<div class="topleft">
<div id="tab1Logo">
<apex:image url="{!$Resource.tab1LogoSmall}"/>
</div>
</div>
<div class="topright">
<div id="piechart-world" class="piechart">
<analytics:reportChart reportId="areportIDgoeshere" size="tiny" showRefreshButton="false">
</analytics:reportChart>
</div>
<div id="piechart-us" class="piechart">
<analytics:reportChart reportId="areportIDgoeshere" size="tiny" showRefreshButton="false">
</analytics:reportChart>
</div>
<div id="piechart-ca" class="piechart">
<analytics:reportChart reportId="areportIDgoeshere" size="tiny" showRefreshButton="false">
</analytics:reportChart>
</div>
</div>
<div class="ChartsContainer" >
<font size="3" color="blue">
<p>Opportunities sold this year</p>
<select id="tab1ChartView" onchange="setView(this)">
<option value="world">World</option>
<option value="usa">USA</option>
<option value="canada">Canada</option>
</select>
</font>
<div id="tab1SalesChart" class="saleschart">
</div>
<font size="3" color="blue">
<p>RFQ received this year</p>
</font>
<div id="RFQChart" class="saleschart"></div>
</div>
</div>
<div id="tab2" class="tabcontent">
<div class="topleft">
<div id="tab2Logo">
<apex:image url="{!$Resource.tab2LogoSmall}"/>
</div>
</div>
<div class="topright">
<div id="piechart-world" class="piechart">
<analytics:reportChart reportId="aReportIDgoeshere" size="tiny" showRefreshButton="false">
</analytics:reportChart>
</div>
<div id="piechart-us" class="piechart">
<analytics:reportChart reportId="aReportIDgoeshere" size="tiny" showRefreshButton="false">
</analytics:reportChart>
</div>
<div id="piechart-ca" class="piechart">
<analytics:reportChart reportId="aReportIDgoeshere" size="tiny" showRefreshButton="false">
</analytics:reportChart>
</div>
</div>
<div class="ChartsContainer" >
<font size="3" color="blue">
<p>Opportunities sold this year</p>
<select id="tab2ChartView" onchange="setView(this)">
<option value="world">World</option>
<option value="usa">USA</option>
<option value="canada">Canada</option>
</select>
</font>
<div id="tab2SalesChart" class="saleschart">
</div>
</div>
</div>
</apex:page>
は私のCSSあるなし(表示されているものはdisplay:ブロックです)、ユーザーがどのタブにいるかによって異なります。私はこれがかなりハッキーであることを知っていますが、私は本当にそれを行うためのより良い方法を理解することができませんでした。あなたには、いくつかのVisualforce.remoting.manager.invokeAction();
電話を持っている場合
function showPiechart(piechart_name) {
var elem_id = "piechart-" + piechart_name;
for (var i=0, elem; elem = piechart_divs[i]; i++) {
if (elem.id == elem_id) {
elem.style.display = "block";
} else {
elem.style.display = "none";
};
};
};
誰かがこれを解決するための手掛かりを提供できますか?私は今6日目にこの質問への回答を待っていて、本当に問題を解決したいと思っています。この問題は、VFページに追加したanalytics:reportChartsに関連しています。私はそれらのレポートを追加した後に起き始めました。私はそれらをレンダリングしている方法が、何らかの形でメニュー項目を崩壊させるスクリプトを妨害していると推測しています。私は本当に、これについてのいくつかのフィードバックを本当に感謝します。 – ag415
さて、私はついにそれを理解しました。 'window.onready = function(){...} 'で囲まれたコードの無害な部分が実際にバグを引き起こしていたことが分かります。これは、問題のコードが文字通り**ページ上の要素には何も**何もしていなかったので、文字通り意味をなさないし、唯一のことはいくつかのデータを頂点メソッドから取得したいくつかのjavascript配列を読み込むことでした。どうやら、どんなばかげた理由でも、セールスフォースの開発者は、このJavaScriptが実際にページに表示されているかのように扱われるべきだと判断しました。 – ag415
これを回避するには、ドキュメントがwindow.onload._ window.onreadyを使用して_withoutを使用してロードされた後にそのコードを実行する方法を見つけなければなりませんが、バグを引き起こさずに動作するようですが、ソリューションかどうか。 – ag415