googletag.cmd.push(function() { googletag.display('div-gpt-ad-1658723334355-0'); });

【專家之眼】抗中保台必會捲土重來

中國人民解放軍。 圖/路透社

地方公職人員選舉順利落幕,除嘉義市長因候選人亡故延期投票外,整個政治盤式初步底定,但距離2024中央公職人員選舉只有十餘個月,不同政治勢力陣營各方人馬無不摩拳擦掌,看來很快就要開始熱身,準備拚搏下場選戰。

本次地方公職人員大選,儘管綠營到最後還是端出「抗中保台」當作最後王牌,但顯然是未能獲得預期反應,許多政治評論者都認為抗中保台牌已經被選民看透,未來選舉可能亦會失效。

但筆者卻認為本次打出抗中保台這張牌,僅是不合時宜搞錯舞台,明明地方選舉是素齋,卻從廚房端出紅燒蹄膀,所以才會遭人猛喝倒采,但是基於下列數個理由,等到中央公職人員選舉之政權保衛戰時,抗中保台必會捲土重來。

首先就是整個國際社會強權對抗大格局並無重大改變,儘管美國拜登政府不斷擺出願意與北京溝通對話姿態,但是許多根本性矛盾並無化解跡象。華盛頓諸多謀士並未放棄用台灣牌來對付中國大陸,因此為維持台北與北京繼續保持矛盾對立,並且阻止雙方建立溝通協商管道,運用代理人來繼續打出抗中保台牌,恐怕還是個無法輕易改變之策略。

其次是就中央公職人員層級之選舉來說,選民所關注焦點不僅是我國政治理水準是否良善,更是隱然存在選擇委託何方具有統治權限之角力。所以對於兩岸關係來說,將是無法迴避之核心議題,但如何處理錯綜複雜之兩岸關係,綠營顯然無意去碰燙手山芋,選擇黑白分明簡化思維之抗中保台政治口號,其實相對上是有利政治動員與選舉票房。

基於綠營獲得揮灑空間必須要靠國際強權撐腰,其亦必須仰賴國際社會聲援,才能營造其有效治理形象,因此繼續選擇與北京對抗,才能顯現出存在價值,所以抗中保台牌是個無法戒除之政治搖頭丸,更是呼應國際強權之壯膽興奮劑,除非國際強權與北京和解到某種程度,逼著綠營必須改善其與北京互動關係,否則綠營繼續迴避兩岸直接對話,利用抗中保台激怒北京,作為掩飾其並無膽識與北京過招之偽裝,其實亦是合理政治選項。

基於前述各項考量,抗中保台必然是會成為綠營應對2024中央公職人員選舉之選戰基調,但是國際強權是否會配合演出呢?誠然基本上絕對不能排除此等可能性,但近日多位政治評論者提到美國期中選舉後,眾議院議長將會換人,新任議長最被看好人選,應當是掌握眾議院席次多數之共和黨麥卡錫眾議員。

麥卡錫眾議員會不會在當選新任議長後,襲人故技出訪台灣,繼裴洛西訪台所掀起八月風暴後,再度掀起另波動盪風潮呢?確實是有許多政治觀察家如此認為,但若是認真思考,裴洛西訪台是打算要下任前之臨去秋波,而麥卡錫新人新政卻無法別出心裁,匠心獨具地拿出新招,只會依據裴洛西老舊套路照樣演出機率有多高?

美國政治人物最大忌諱就是無法走出新路,只能照著前人戲碼繼續演出,這對於政治生命與聲望來說,必將會是嚴重威脅。假若麥卡錫照著老路走,北京端出同樣戲碼,這對於麥卡錫來說,到底是加分還是減分?其實從這個觀點來說,重複演出相同政治醜劇,可能性恐怕不高!

總而言之,兩岸關係是台灣不可能永遠迴避之議題,抗中保台是個沒有結果之愚昧策略,不能挺起胸膛豎起腰桿來面對北京,這個死結永遠打不開。雖然抗中保台必然還會捲土重來,但是選民是否還會買單,就讓咱們睜眼看著明年要上場之政治大戲吧!

FB討論區

// $(function() { // $.ajax({ url: $("#ppv").attr("rel"), cache: false }); // $(".trigger_tag").on("click", function(e) { // $.ajax({ // url: "/EventCollect/clickEvent/2/" + $(this).attr("rel"), // cache: false // }); // }); // }); var pvUrl = document.getElementById('ppv').getAttribute('rel'); fetch(pvUrl).then((response) => {}); var tags = Array.from(document.getElementsByClassName('trigger_tag')); tags.forEach(tag => { tag.addEventListener('click', function handleClick(event) { var tagUrl = "//misc.udn.com/api/EventCollect/2/" + this.getAttribute('rel'); fetch(tagUrl,{cache: "no-cache"}).then((response) => {}); }); });
googletag.cmd.push(function() { googletag.display('div-gpt-ad-1658723270743-0'); });
// Function to create a mutation observer that removes a specific div when it appears function createDivRemover(targetSelector, callback = null) { // Create the mutation observer const observer = new MutationObserver((mutations) => { mutations.forEach((mutation) => { // Check if nodes were added if (mutation.type === 'childList' && mutation.addedNodes.length > 0) { mutation.addedNodes.forEach((node) => { // Check if the added node is an element if (node.nodeType === Node.ELEMENT_NODE) { // Check if the node matches our target selector if (node.matches && node.matches(targetSelector)) { console.log('Target div found:', node); // Execute callback if provided if (callback && typeof callback === 'function') { callback(node); } // Remove the element node.remove(); console.log('Target div removed'); } // Also check children of the added node const targetElements = node.querySelectorAll ? node.querySelectorAll(targetSelector) : []; targetElements.forEach((targetElement) => { console.log('Target div found in children:', targetElement); // Execute callback if provided if (callback && typeof callback === 'function') { callback(targetElement); } // Remove the element targetElement.remove(); console.log('Target div removed from children'); }); } }); } }); }); // Start observing observer.observe(document.body, { childList: true, subtree: true }); // Return the observer so it can be disconnected if needed return observer; } // Function to remove existing elements that match the selector function removeExistingElements(targetSelector, callback = null) { const existingElements = document.querySelectorAll(targetSelector); existingElements.forEach((element) => { console.log('Existing target div found:', element); // Execute callback if provided if (callback && typeof callback === 'function') { callback(element); } // Remove the element element.remove(); console.log('Existing target div removed'); }); } // Main function to set up the div remover function setupDivRemover(targetSelector, callback = null, removeExisting = true) { // Remove existing elements if requested if (removeExisting) { removeExistingElements(targetSelector, callback); } // Set up the mutation observer for future elements const observer = createDivRemover(targetSelector, callback); return observer; } // Example usage: // More complex selector const observer4 = setupDivRemover('.fc-message-root', (element) => { console.log('Element with funding in class or id detected:', element); document.body.style.overflow = 'auto'; }); // To stop observing (if needed) // observer1.disconnect(); // Alternative: One-liner function for quick setup const quickDivRemover = (selector) => setupDivRemover(selector, null, true);